概述
扁平化数组:多维数组转化为一维数组
文章目录
- 扁平化数组:多维数组转化为一维数组
- 方法一:递归实现
- 方法二:reduce函数
- 方法三:扩展运算符
- 方法四:split&toString
- 方法五(推荐):传入参数,决定扁平阶数
方法一:递归实现
const a = [1, [2, [3, [4, 5]]]];
const flatten = (arr) => {
let result = [];
for (let i = 0; i < arr.length; i++) {
if (Array.isArray(arr[i])) {
//concat方法进行拼接
result = result.concat(flatten(arr[i]));
// console.log(result)
} else {
result.push(arr[i]);
}
}
return result;
};
方法二:reduce函数
const flatten1 = (arr) => {
return arr.reduce((prev, next) => {
return prev.concat(Array.isArray(next) ? flatten(next) : next);
}, []);
};
方法三:扩展运算符
const flatten2 = (arr) => {
//some方法把数组中仍然是组数的项过滤出来
while (arr.some((item) => Array.isArray(item))) {
arr = [].concat(...arr);
console.log(arr);
}
return arr;
};
console.log(flatten2(a));
方法四:split&toString
const flatten3 = (arr) => {
return arr.toString().split(",");
};
//
console.log(flatten3(a));
方法五(推荐):传入参数,决定扁平阶数
Array.prototype._flat = function (n) {
let result = [];
let num = n;
for (let item of this) {
// 如果是数组
if (Array.isArray(item)) {
n--;
//
没有扁平化的空间 直接推入
if (n < 0) {
result.push(item);
}
// 继续扁平化 并将n传入 决定item这一个数组中的扁平化
else {
result.push(...item._flat(n));
}
}
// 不是数组直接推入
else {
result.push(item);
}
// 每次循环 重置n 为传入的参数 因为每一项都需要扁平化 需要进行判断
n = num;
}
return result;
};
let arr = [1, 2, [3, 4], [5, 6, [7, 8]]];
let res = arr._flat(1);
console.log(res); // [ 1, 2, 3, 4, 5, 6, [ 7, 8 ] ]
这段时间将不断更新–》手撕js系列,如果对你有帮助帮小编,点个赞,加个关注哈。
最后
以上就是重要高山为你收集整理的扁平化数组:多维数组转化为一维数组的全部内容,希望文章能够帮你解决扁平化数组:多维数组转化为一维数组所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复