> 文档中心 > 浅谈数组扁平化方法

浅谈数组扁平化方法


数组扁平化的几种方法,欢迎拍砖!

数组扁平化其实就是将一个嵌套多层的数组转换为只有一层的数组,好了废话不多说,直接上代码(以免被拍的太狠!!!)

方法一 :

 var arr = [1, 2, 3, 4, 5, [6, 7, 8, 9, [10, 11, 12]], 13, 14, 15]    /     * ES10 flat()     * 优点:简单快捷     * 缺点:因为是ES2019(ES10)方法,目前还未在所有浏览器兼容    */    // function flattenArrays(a){    //     return a.flat(Infinity)    // }    // console.log(flattenArrays(arr));     //数组扁平化.html:24 (15) [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]

方法二 :

var arr = [1, 2, 3, 4, 5, [6, 7, 8, 9, [10, 11, 12]], 13, 14, 15]
/
* 递归:递归遍历每一项,如果为数组则继续遍历,否则就concat
/
// function flattenArrays(arr){
/
空数组用来存放遍历后的新数组 /
// let res = [];
/
利用数组的map()方法 /
// arr.map(item=>{
/
判断item是不是数组 /
// if(Array.isArray(item)) {
/
是数组就合并进res /
// res = res.concat(flattenArrays(item))
// }else{
/
否则就添加进新数组 */
// res.push(item)
// }
// })
// return res
// }
// console.log(flattenArrays(arr));
//数组扁平化.html:43 (15) [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]

方法三 :

 var arr = [1, 2, 3, 4, 5, [6, 7, 8, 9, [10, 11, 12]], 13, 14, 15]/  * toString & split  * 调用数组的toString()方法,将数组转为字符串,然后用 split()分割还原为数组*/function flattenArrays(arr){    // split()方法分割后形成的数组的每一项的值为字符串,因此需要用一个map()方法遍历数组将其每一项转换为数值型    return arr.toString().split(',').map(function(item){ return Number(item)    })}console.log(flattenArrays(arr));// 数组扁平化.html:63 (15) [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]

方法四 :

 var arr = [1, 2, 3, 4, 5, [6, 7, 8, 9, [10, 11, 12]], 13, 14, 15];/ * join() $ split() * 调用数组的join()方法将数组转为字符串,再用split()方法分割还原为数组*/// function flattenArrays(arr){//     return arr.join(',').split(',').map(function(item){//  return parseInt(item)//     })加粗样式// }// console.log(flattenArrays(arr));// 数组扁平化.html:76 (15) [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]

方法五 :

 var arr = [1, 2, 3, 4, 5, [6, 7, 8, 9, [10, 11, 12]], 13, 14, 15]; /      方法五:     reduce():     * reduce是数组的一种方法,它接收一个函数作为累加器,数组中的每个(从 到右)开始缩减,最终计算为一个值。     * reduce包含两个参数:回调函数,传给total的初始值     * 求数组的各项值相加的和:     * arr.reduce((total, item)=> {  // total为之前的计算结果,item为数组的各项值     * return total + item;     * }, 0);    */    // function flattenArrays(arr) {    //     return arr.reduce((result, item) => {    //  return result.concat(Array.isArray(item) ? flattenArrays(item) : item)    //     }, []);    // }    // console.log(flattenArrays(arr));    // 数组扁平化.html:89 (15) [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]

方法六 :

  /     * 方法六:     * 扩展运算符:     * ES6的扩展运算符能将二维数组变为一维数组中    */   function flattenArrays(arr){while(arr.some((item)=> Array.isArray(item))){    arr = [].concat(...arr)}return arr   }   console.log(flattenArrays(arr));//    数组扁平化.html:108 (15) [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]

以上为个人几点总结,欢迎讨论!在这里插入图片描述

古诗弟