gpt4 book ai didi

javascript - 使用 Javascript 在数组中展平

转载 作者:行者123 更新时间:2023-11-30 07:13:43 25 4
gpt4 key购买 nike

问题是尝试删除嵌套数组:

steamrollArray([1, [2], [3, [[4]]]]); // should return [1, 2, 3, 4]

我试过了,但是当出现嵌套数组时递归失败。

function checkElement(el) {
if (Array.isArray(el)) {
if (el.length === 1) {
return checkElement(el[0]);
} else {
for (var i=0; i < el.length; i++){
checkElement(el[i]);
}
}

} else {
return (el);
}
}

function steamrollArray(arr) {
var finalArr = [];
for (var i=0; i < arr.length; i++){
finalArr.push(checkElement(arr[i]));
}


return (finalArr);

}

最佳答案

第一部分的建议:

您可以将返回值更改为数组并使用 concat 而不是 push。

function checkElement(el) {
// collect the values of the checked array
var temp = [];
if (Array.isArray(el)) {
if (el.length === 1) {
return checkElement(el[0]);
} else {
for (var i = 0; i < el.length; i++) {
// collect the values
temp = temp.concat(checkElement(el[i]));
}
// return flat values
return temp;
}
} else {
return el;
}
}

// this can be shorten to
function steamrollArray(arr) {
return checkElement(arr);
}

console.log(steamrollArray([1, [2], [3, [[4]]]]));

第二部分,更短一些:

function steamrollArray(arr) {
return arr.reduce(function flat(r, a) {
return Array.isArray(a) && a.reduce(flat, r) || r.concat(a);
}, []);
}

console.log(steamrollArray([1, [2], [3, [[4]]]]));

关于javascript - 使用 Javascript 在数组中展平,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38349816/

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