0
点赞
收藏
分享

微信扫一扫

数组扁平化的几种方法

橙子好吃吗 2021-09-24 阅读 79
一点点
[1, [2, 3, [4, 5]]]  ------>    [1, 2, 3, 4, 5]
  1. 使用reduce方法递归实现
function flatten(list){
return list.reduce((list,item)=>{
return list.concat(Array.isArray(item) ? flatten(item): item);
},[])
}
  1. 使用toString() 和map 方法

[1, [2, 3, [4, 5]]].toString() => '1,2,3,4,5'
然后按逗号分隔为数组 => ['1', '2', '3', '4', '5']
再把数组中每项字符串转换为数字

function flatten(list){
return list.toString().split(',').map(item=>Number(item))
}
  1. join()与map方法
    与 toString()方法一样 join也可以把数组转换为一维字符串
function flatten(list){
return list.join().split(',').map(item=>Number(item))
}
  1. map方法递归

function flatten(arr){
var list = []
arr.map(item=>{
if(Array.isArray(item)){
list = list.concat(flatten(item))
} else {
list.push(item)
}
})
return list
}
  1. es6的扩展运算符能将二维数组变为一维
    [...[1,2,[4]]] => [1,2,[4]]
function flatten(arr) {
while(arr.some(item=>Array.isArray(item))) {
arr = [].concat(...arr);
}
return arr;
}
  1. flat(Infinity)
arr.flat(Infinity)
  1. 正则
JSON.stringify(arr).replace(/[\[|\]]/g, '').split(',').map(item=>Number(item))

参考:https://www.cnblogs.com/chenhuichao/p/13564682.html

举报

相关推荐

0 条评论