我
js 如何实现数组扁平化?
难度:
js
// 这一种方法通过递归来实现,当元素为数组时递归调用,兼容性好
function flattenArray(array) {
if (!Array.isArray(array)) return;
let result = [];
result = array.reduce(function (pre, item) {
// 判断元素是否为数组,如果为数组则递归调用,如果不是则加入结果数组中
return pre.concat(Array.isArray(item) ? flattenArray(item) : item);
}, []);
return result;
}
//使用递归的形式进行数组打平
function flatArray(arr) {
let result = [];
function flat(arr) {
arr.forEach((element) => {
if (Array.isArray(element)) {
flat(element);
} else {
result.push(element);
}
});
}
flat(arr);
return result;
}
// 这一种方法是利用了 toString 方法,它的一个缺点是改变了元素的类型,只适合于数组中元素都是整数的情况
function flattenArray(array) {
return array
.toString()
.split(",")
.map(function (item) {
return JSON.parse(item);
});
}