如何实现js数组的扁平化,针对这个问题,本文详细介绍了相应的分析和解决方法,希望能帮助更多想要解决这个问题的朋友找到更简单更容易的方法。
数组扁平化的方式
什么是阵列扁平化?
数组扁平化:它指的是把多维数组转换成一维数组。
示例:展平以下数组。
constar=[1、[2、3、[4、5]]/////[1、2、3、4、5]
1.使用flat()
flat()方法是由ES10提出的,它根据指定的深度递归遍历数组,并将所有元素与遍历的子数组中的元素组合成一个。(扁平意味着“水平的;扁平”)
Constresult1=arr.flat(无穷大)//指定深度为无穷大。
console.log(result1)//[1,2,3,4,5]
construsult2=arr . flat(1)//指定深度1
console.log(result2)//[1,2,3,[4,5]]
construsult3=arr . flat(2)//指定深度2
console.log(result3)//[1,2,3,4,5]
2.使用正则
以下做法得到的数组元素都会变成字符串,不建议使用;
constrasult1=JSON . stringify(arr)。替换(/\[|\]/g ' ')。拆分(',')
Console.log (result1)//['1 ',' 2 ',' 3 ',' 4 ',' 5']数组元素都变成了字符串对以上方法进行优化处理;.
constrasult2=JSON . parse('[' JSON . stringify(arr))。替换(/\[|\]/g,")']')
Console.log (result2)//[1,2,3,4,5]
3.使用reduce()+concat()
使用reduce获取数组的当前值和前一个值,判断当前值是否为数组,将初始值设置为[],然后使用concat合并数组。
Reduce()方法:执行您为数组中的每个元素提供的reduce函数(按升序执行),并将结果汇总成一个返回值。
Concat()方法:用于合并两个或多个数组。此方法不更改现有数组,但返回一个新数组。
函数扁平化(arr){ 0
returnrr . reduce((pre,current)=}
returnpre.concat(Array.isArray(当前)?展平(电流):电流)
},[])
}
construction sult=扁平化(arr)
Console.log (result)//[1,2,3,4,5]
4.使用函数递归
循环迭代数组,找到数组元素时递归处理,最后将数组转换为一维数组。
constrasult=[]
function exec(arr){ 0
arr . foreach(item={ 0
if(array . isarray(item)){ 0
执行(项目)
}else{
结果.推送(项目)
}
})
}
高管
Console.log (result)//[1,2,3,4,5]
5.使用扩展运算符+concat()
ES6新引入的扩展运算符可以对数组降维(一次降一维),循环判断是否有数组,进行concat合并。
Some()方法:测试数组中是否至少有一个元素通过了提供的函数测试(它返回一个布尔值)。
函数扁平化(arr){ 0
while(arr . some(item=array . isarray(item)))
arr=[]。concat(.arr)
}
返回
}
construction sult=扁平化(arr)
Console.log (result)//[1,2,3,4,5]这里分享了js如何展平数组的答案。我希望
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/144254.html