zoukankan      html  css  js  c++  java
  • --《JavaScript那些事》--数组扁平化的几种实现方法--

    数组扁平化

    解决数组扁平化问题时,应该先找准扁平化的关键点在哪?

    关键点在于解决多余的'[]', 因此有以下解决方式:

    1. 使用toString() + split()解决纯字符串的数组
        let a = [18, 'sada', 28];
        let array = ['aaaa', 'bbbb', 'cccc'];
        let array2 = [1, 2, 3];
        Array.prototype.push.call(array2, a);
        Array.prototype.push.call(array2, array);
        console.log(array2.toString().split(',')); //['1','2','3','18','sada', '28','aaaa', 'bbbb', 'cccc']
    

    该方法会将数组中的内容转为字符串,对于单一数据类型数组使用该方法更合适

    1. 递归 + concat + isArray
        function handleArray (arr1) {
        if (! arr1 instanceof Array) {
            return []
        }
        let arr = [];
        for (let i in arr1) {
            if (Array.isArray(arr1[i])) {
                arr = arr.concat(handleArray(arr1[i]));
            } else {
                arr.push(arr1[i]);
            }
        }
        return arr;
        }
    
        array2 = handleArray(array2)
        console.log(array2) //[1,2,3,18,'sada',28,'aaaa','bbbb','cccc']
    
    1. flat方法
        let array3 = array2.flat();
        console.log(array3); //[1,2,3,18,'sada',28,'aaaa','bbbb','cccc']
    
    1. 正则表达式
        let array4 = array2.toString().replace('/[|]/g', '').split(',');
        console.log(array4);//['1','2','3','18','sada', '28','aaaa', 'bbbb', 'cccc']
    
    离大侠再近一步!
  • 相关阅读:
    第三章 运算符与表达式
    python 第二章 对象与类型
    线段树区间染色+注意事项
    ACM-ICPC北京赛区2018重现赛 A题
    删除元组
    修改元组
    访问元组
    Python 元组
    Python List sort()方法
    hdu4501——小明系列故事——买年货(多维背包)
  • 原文地址:https://www.cnblogs.com/Samo-Li/p/14453500.html
Copyright © 2011-2022 走看看