如何将嵌套数组递归转换为平面数组?

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)

And*_*eas 1

目前,您的函数并未展平数组,而是简单地解析数组的每个单独元素。它仍然返回相同的数组结构。

要展平数组,您还应该传递结果数组,以便可以将单个元素直接推入结果数组,而不是创建另一个数组并将其推入结果数组(这会产生相同的初始数组结构)

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)