js中什么是数组扁平化,实现扁平化的方法有哪些【面试题详解】

今天爱分享给大家带来js中什么是数组扁平化,实现扁平化的方法有哪些【面试题详解】,希望能够帮助到大家。
数组扁平化:一个多维数组变为一维数组,方法如下:
1.flat( ES 6)
flat() 方法会按照一个可指定的深度递归遍历数组,并将所有元素与遍历到的子数组中的元素合并为一个新数组返回。


let newArray = arr.flat([depth]);
depth值可选: 指定要提取嵌套数组的结构深度,默认值为 1,不确定层级也可写 `Infinity`。

2.reduce


function flatten(arr) {  
    return arr.reduce((result, item)=> {
        return result.concat(Array.isArray(item) ? flatten(item) : item);
    }, []);
}

3.String & split


function flatten(arr) {
    return arr.toString().split(',').map(function(item) {
        return Number(item);
    })
} 

4.join & split


function flatten(arr) {
    return arr.join(',').split(',').map(function(item) {
        return parseInt(item);
    })
}

5.扩展运算符


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

也可以做一个遍历,若 arr 中含有数组则使用一次扩展运算符,直至没有为止,如下:
扩展运算符每次只能展开一层数组

function flatten(arr) {
    while(arr.some(item=>Array.isArray(item))) {
        arr = [].concat(...arr);
    }
    return arr;
}

6.递归


function flatten(arr) { 
  var res = [];
  arr.map(item => {
    if(Array.isArray(item)) {
      res = res.concat(flatten(item));
    } else {
      res.push(item);
    }
  }); 
  return res;
}

人已赞赏
前端

js中map 和 forEach 有何区别【面试题详解】

2020-12-29 17:45:01

前端

js中缓存 SessionStorage,LocalStorage,Cookie分别是什么【面试题详解】

2020-12-29 17:51:30

'); })();