2-17、手写flat方法拍平数组

72 阅读1分钟

知识点

Array.concat(1,2,3,[4,5])

Array.some(item => item instanceof Array)

判断是不是数组

xxx instanceof Array

用递归的方法

方法一

<script>
    const arr = [1, 2, [3, 4, [5, 6]]];
    const res = flat(arr);

    console.log(res);
    function flat() {
        while (arr.some(item => item instanceof Array)) {
            arr = Array.prototype.concat.apply([], arr);
        }
        return arr;
    }
</script>

方法二

<script>
    // 只能嵌套一层
    // const arr = [1, 2, [3, 4]];

    // const res = flat(arr);
    // console.log(res);

    // function flat() {
    //     return Array.prototype.concat.apply([], arr)
    // }
    // console.log(arr.flat());



    const arr = [1, 2, [3, 4,[5,6]]];
    const res = flat(arr);
    console.log(res);
    function flat(arr) {
        const hasDeep = arr.some(item => item instanceof Array)

        if (!hasDeep) {
            return arr;
        }

        const res = Array.prototype.concat.apply([], arr);
        return flat(res)
    }

    // console.log(arr.flat());

    // concat()拼接数组
    // const arr1 = [10, 20, 30];
    // const arr2 = [40, 50];
    // const arr3 = arr1.concat(arr2);
    // const arr3 = arr1.concat(40, 50, [60, 70]);
    // console.log(arr3);
</script>