gpt4 book ai didi

javascript - 为什么这个递归在 Javascript 上不起作用?

转载 作者:行者123 更新时间:2023-12-03 06:23:29 25 4
gpt4 key购买 nike

问题出在 listToArray 函数中,arrayToList 只是提供有关如何创建列表的上下文。

var arrayToList = function (array) {
var lastList = null;
for (i=array.length-1; i >= 0; i--) {
var list = {value : array[i], rest : lastList};
lastList = list;
}
return lastList;
}

var list = arrayToList([1,2,3])

var listToArray = function (list) {
var array = [];
array.push(list.value);
if (list.rest != null) {
array.concat(listToArray(list.rest));
} else {
return array;
}
}

var array = listToArray(list)

> list
{ value: 1, rest: { value: 2, rest: { value: 3, rest: null } } }
> array
undefined

最佳答案

几个修复:

  • 必须返回要在 array.concat 中使用的数组
  • 每次新的 arr = [] 都会丢失前一个的上下文。要么应该将其作为参数传递,要么将其保留在全局上下文中。

运行以下代码片段。

var arrayToList = function(array) {
var lastList = null;
for (i = array.length - 1; i >= 0; i--) {
var list = {
value: array[i],
rest: lastList
};
lastList = list;
}
return lastList;
}

var list = arrayToList([1, 2, 3])

var listToArray = function(list, array) {
if (!array) {
array = [];
}
array.push(list.value);
if (list.rest != null) {
array.concat(listToArray(list.rest, array));
} else {
return array;
}
// need to return the array which is used in array.concat
return array;
}
var array = listToArray(list);
console.log(list);
console.log(array);

关于javascript - 为什么这个递归在 Javascript 上不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38757148/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com