gpt4 book ai didi

javascript - 如何将循环中的本地数组连接到循环外的本地数组?

转载 作者:行者123 更新时间:2023-12-02 15:31:57 24 4
gpt4 key购买 nike

我有一个基本的递归函数,该函数应该将每个数组/对象中找到的每个值推送到结果数组中:

var bigArray = ['a', ['howdy', 'partner'], ['b', ['c', ['d', {a:'e', b:['yes', 'no', {apple: 'orange'}]}]]]];

function bagger293(bigArray){
var results = [];
for (var item in bigArray){
if (typeof bigArray[item] === 'object'){
bagger293(bigArray[item]);
}else{
results.push(bigArray[item]);
}
}
return results;
}

console.log(bagger293(bigArray));

期望:[ 'a', 'howdy', 'partner', 'b', 'c', 'd', 'e', 'yes', 'no', 'orange' ]

但是自从 var results = [];在函数内部,每次发生递归时,调用该函数时,结果数组都会更改,而不是添加到每个循环中。我知道我需要连接,但我不知道如何连接。我试过results.concat(results.push(bigArray[item]);但这只返回 ['a']

如果我搬家var results = [];对于全局范围,一切都可以完美运行,不需要 concat,但我想在本地范围内实现这一点。有什么想法吗?

最佳答案

最简单的事情是将结果数组与函数一起传递:

function bagger293(bigArray, results) {
for (var item in bigArray){
if (typeof bigArray[item] === 'object') {
results = bagger293(bigArray[item], results);
} else {
results.push(bigArray[item]);
}
}
return results;
}

console.log(bagger293(bigArray, []));

关于javascript - 如何将循环中的本地数组连接到循环外的本地数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33243725/

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