yiw*_* qi 8 javascript arrays recursion nested
我正在尝试将此嵌套数组转换为平面数组。在使用这种方法解决问题时,似乎每次我回调arrayFlattener(element)时,newArr都会变成一个空数组。有人可以帮我弄这个吗?谢谢。
const arrayFlattener = (arr) => {
let newArr = [];
for (let i = 0; i < arr.length; i++) {
let element = arr[i];
if (Array.isArray(element)){
newArr.push(arrayFlattener(element));
} else {
newArr.push(element);
}
}
return newArr;
}
console.log(arrayFlattener(['I', 'am', 'working', ['on', 'another', 'level']]));Run Code Online (Sandbox Code Playgroud)
目前,您的函数并未展平数组,而是简单地解析数组的每个单独元素。它仍然返回相同的数组结构。
要展平数组,您还应该传递结果数组,以便可以将单个元素直接推入结果数组,而不是创建另一个数组并将其推入结果数组(这会产生相同的初始数组结构)
let newArr = [];
const arrayFlattener = (arr, result) => {
for (let i = 0; i < arr.length; i++) {
let element = arr[i];
if (Array.isArray(element)){
result = arrayFlattener(element, result);
} else {
result.push(element);
}
}
return result
}
console.log(arrayFlattener(['I', 'am', 'working', ['on', 'another', 'level'], 'now'], newArr));Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
103 次 |
| 最近记录: |