【发布时间】:2021-01-10 01:54:33
【问题描述】:
我是 javascript 新手。我有两个函数,一个叫做arrayToList,它接受一个数组并从中生成一个列表,另一个叫做listToArray,它接受一个列表并从中生成一个数组。第一个工作正常。但是,如果是第二个,我必须 仅在第一次迭代中创建一个空数组 for 或 while 循环,在该循环中,我会将列表的每个值传递给我创建的数组,并在每个步骤删除 list.value 并将列表设置为 list.rest(即列表的其余部分),然后递归地继续调用相同的函数。
我的问题是我无法在函数中声明数组。如果我说if(!array) {let array=[];},那么我会收到数组未定义的消息,如果我将数组声明为全局,那么它会在不同的函数调用中保留值,这是我不想要的。下面是代码。感谢您的帮助。
let array=[];
function listToArray(list) {
while(list.value) {
array.push(list.value);
delete list.value;
list=list.rest;
listToArray(list);
}
return array;
}
console.log(listToArray({value: 10, rest: {value: 20, rest: {
value: 30
rest: {value: 50, rest: {value: 70, …}}));
【问题讨论】:
标签: javascript arrays list recursion