数组常用方法
时间:2023-8-28 21:59 作者:小锐 分类: JS
1.flat
flat(Infinity)是Array.prototype.flat()方法的一个用法,它的参数是一个无穷大的值Infinity。将Infinity作为参数传递给flat()方法时,它会递归地展开所有嵌套的数组,直到将所有元素展开为一个新的一维数组。
let arr3 = [1,2,3,[2,3,1,[5,6,4,7],[2,3,6,9,4,5,[0,7,1,4,2,3,[3,6,2,0,1,[2,0,2,5,]]]]]];
let arr4 = arr3.flat(Infinity)
console.log(arr4)
//打印出来 [1, 2, 3, 2, 3, 1, 5, 6, 4, 7, 2, 3, 6, 9, 4, 5, 0, 7, 1, 4, 2, 3, 3, 6, 2, 0, 1, 2, 0, 2, 5]
arr4.sort((a,b)=>a-b) // a-b 为正序 b-a 为倒序
console.log(arr4)
使用sort排序之后 [0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 4, 4, 4, 5, 5, 5, 6, 6, 6, 7, 7, 9]
arr4.sort((a,b)=>a-b)
console.log(arr4)
//b-a 为倒序
// [9, 7, 7, 6, 6, 6, 5, 5, 5, 4, 4, 4, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0];
我知道的还有一种方法是通过递归实现
使用reduce方法来展开嵌套的数组,并将所有元素放入一个新的数组中,通过调用summm(arr3)来执行该函数,并将arr3作为参数传递进去。执行后,将返回一个新的数组ffff,其中包含了arr3中的所有元素,不论嵌套的层数有多深。
```javascript
function summm(arr) {
return arr.reduce((v, i) => {
if (Array.isArray(i)) {
v.push(...summm(i))
} else {
v.push(i)
}
return v
}, [])
}
let ffff = summm( arr3);
###### 在v.push(...summm(i))时我使用了递归来处理嵌套的数组。当遇到嵌套的子数组时,会递归调用summm函数来展开子数组,并将展开后的元素加入到结果数组中。
标签: flat(Infinity) sort reduce