跳到正文
文章封面

【编程题与分析题】数组扁平化

数组扁平化

// v1. 递归实现版本
function flatten(arr) {
    let res = [];
    for (let i = 0, len = arr.length; i < len; i++) {
        if (Array.isArray(arr[i])) {
            res = res.concat(flatten(arr[i]));
        }
        else {
            res.push(arr[i]);
        }
    }
    return res;
}

// v2. 使用数组的toString方法实现
function flatten(arr) {
    return arr.toString().split(',').map(item => +item);
}
// TODO: 会把所有的项都变成数字了
// console.log(flatten([1, '1', [2, 3, 4]]));



// v3. 使用reduce函数来实现(重点掌握)
function flatten(arr) {
    return arr.reduce((prev, next) => {
        return prev.concat(Array.isArray(next) ? flatten(next) : next);
    }, []);
}
console.log(flatten([1, '1', [2, 3, 4]]));


// v4. 使用...运算符来解构数组
function flatten(arr) {
    // 数组中只要有一项是数组的话,就把当前的这个数组解构一层
    while (arr.some(item => Array.isArray(item))) {
        arr = [].concat(...arr);
    }
    return arr;
}

评论

填写昵称与邮箱即可评论,无需登录。

推荐阅读