数组扁平化的实现方式

数组扁平化的实现方式

方法一

利用数组的 join() 转换成字符串,利用字符串的 split() 转换成数组
利用map 遍历数组,将每一项字符串类型转换成数字类型

var arr = [1,2,[3,4,5,[6,7],8,9],[10,11,[12,13]]];
var flatten = array=>array.join(',').split(',').map(item=>Number(item));
flatten(arr);

方法二

使用ES6 数组的reduce()方法结合数组的扩展运算符,reduce()里面是一个回调函数,
acc必选起始值, 若init 存在,则acc 为init值,current 必选,当前值;init,可选任意数据类型,0/[]/{}/''等等,数据类型取决于运算结果的类型

Array.reduce(function(acc,current){},init)

var arr = [1,2,[3,4,5,[6,7],8,9],[10,11,[12,13]]];
var flatten = array => array.reduce((acc, cur) =>
     Array.isArray(cur)? [...acc, ...flatten(cur)] : [...acc, cur],[]);
flatten(arr);

方法三

迭代 遍历

var arr = [1,2,[3,4,5,[6,7],8,9],[10,11,[12,13]]];
var flatten = function(array){
    for(var item of array){
       //这种和下面的写法区别在哪:  Array.isArray(item)? [].concat([...item]):[];
        if(Array.isArray(item)){
            array = [].concat(...array)
        }
    }
    return array;
}
flatten(arr)

方法四

递归

var arr = [1,2,[3,4,5,[6,7],8,9],[10,11,[12,13]]];
var flatten = function(array){
    var newArr = [];
    for(var item of array){
        if(Array.isArray(item)){
            newArr.push(...flatten(item))
        }else {
            newArr.push(item)
        }
    }
    return newArr;
}
flatten(arr)
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容