JavaScript数组转链表:如何修正最终rest值为null
问题解决:数组转链表函数的输出修正
问题原因
你的循环从arr.length开始遍历,而数组的有效索引范围是0到arr.length - 1,这导致多执行了一次循环,处理了不存在的数组元素arr[arr.length](值为undefined)。JSON序列化时会自动忽略值为undefined的属性,所以最终输出里会多出一个仅包含rest: null的嵌套对象。
修正后的代码
function array_to_list(arr) { let list = null; // 从数组最后一个有效元素开始遍历 for (let i = arr.length - 1; i >= 0; i--) { list = { value: arr[i], rest: list }; } return list; } const x = array_to_list([10, 20]); console.log(JSON.stringify(x));
关键修改点
- 调整循环范围:将循环起始索引改为
arr.length - 1,确保只处理数组中存在的元素,避免多生成一个无效节点 - 变量声明规范:给
list和循环变量i加上let声明,避免变量泄漏到全局作用域;用const声明x,符合不可变变量的使用习惯
修正后输出
{"value":10,"rest":{"value":20,"rest":null}}
内容的提问来源于stack exchange,提问作者VOZ ESTOICA
相关产品推荐
相关产品推荐

