//方法一
function flatArray1(arr) {
return arr.flat(Infinity)
}
//方法二
function flatArray2(arr) {
return arr.reduce((pre, cur) => {
return pre.concat(cur instanceof Array ? flatArray2(cur) : cur)
}, [])
}
//方法三
function flatArray3(arr) {
let res = [];
arr.forEach(element => {
if(element instanceof Array) {
flatArray3(element).forEach(e => res.push(e))
} else {
res.push(element)
}
});
return res;
}
//手写 flat
Array.prototype.myFlat = function (num) {
if (typeof num != "number") {
throw Error("num must be a number");
}
if (num == 0) {
return this;
}
let sign = true;
let newArr = [];
for (let i = 0; i < this.length; i++) {
if (this[i] instanceof Array) {
newArr.push(...this[i]);
sign = false;
} else {
newArr.push(this[i]);
}
}
if (num < 0 || sign) {
return this;
} else {
--num;
newArr = newArr.myFlat(num);
return newArr;
}
};
console.log(arr.myFlat(Infinity));
数组扁平化(降维)的三种方式
最新推荐文章于 2024-05-31 22:07:13 发布
本文介绍了三种不同的JavaScript方法来扁平化多维数组:使用内置的 flat 方法、reduce 和 forEach。此外,还提供了一个自定义的 myFlat 方法实现,该方法接受一个参数 num 用于指定扁平化的深度。这些方法对于处理嵌套数组非常有用。
摘要由CSDN通过智能技术生成