zoukankan      html  css  js  c++  java
  • JS拉平数组

    JS拉平数组

    有时候会遇到一个数组里边有多个数组的情况(多维数组),然后你想把它拉平使其成为一个一维数组,其实最简单的一个方法就是ES6数组方法Array.prototype.flat。使用方法如下:

    const lists = [1, [2, 3, [4, 5]]];
    lists.flat(); // [1, 2, 3, [4, 5]],默认只拉平一层,如果想要全部拉平,参数换为Infinity即可
    

    可是实际有些情况下,需要去兼容低版本的问题处理,所以就自己写了两种解决方案,根据自己喜欢使用,不过没支持Infinity这个处理方式,仅是作为自定义拉平数组。

    1.递归

    const lists = [1, [2, 3, [4, 5]]];
    function reduceArr(list, depth) {
        if(depth === 0) return list;
        let result = [];
        for(let i = 0;i < list.length;i++) {
            if(Array.isArray(list[i])) {
                result = result.concat(list[i]);
            } else {
                result.push(list[i]);
            }
        }
        return reduceArr(result, --depth);
    }
    console.log(reduceArr(lists, 2));
    

    2.循环处理

    const lists = [1, [2, 3, [4, 5]]];
    function reduceArr(list, depth) {
        let result = [];
        for(let i = 1;i <= depth;i++) {
            result.length && (list = result);
            result = [];
            for(let j = 0;j < list.length;j++) {
                if(Array.isArray(list[j])) {
                    result = result.concat(list[j]);
                } else {
                    result.push(list[j]);
                }
            }
        }
        if(depth) {
            return result;
        } else {
            return list;
        }
    }
    console.log(reduceArr(lists, 2));
    
  • 相关阅读:
    CSS3学习手记(7) CSS3装换 3D转换
    CSS3学习手记(6) CSS3装换 2D转换
    CSS3学习手记(5) 渐变
    CSS3学习手记(4) 伪元素
    CSS3学习手记(3) CSS权重
    CSS3学习手记(2) 伪类选择器
    CSS3学习手记(1) 选择器
    HTML5学习手记(二)
    HTML5学习手记(一)
    浏览器远程调试VS
  • 原文地址:https://www.cnblogs.com/ljwk/p/11498128.html
Copyright © 2011-2022 走看看