数组扁平化
/ 多维数组转一维数组
function flatten(arr) {
return arr.reduce((all, curr) => {
if (Array.isArray(curr)) {
return [...all, ...flatten(curr)];
} else {
return [...all, curr];
}
}, []);
}
const res0 = flatten([1, 2, [3, 4, [5, 6]]]);
console.log(res0); // [1, 2, 3, 4, 5, 6]
对象扁平化
// 多维对象转一维对象
function flattenObj(obj) {
let res = {};
for (let key in obj) {
if (typeof obj[key] === "object") {
res = { ...res, ...flattenObj(obj[key]) };
} else {
res[key] = obj[key];
}
}
return res;
}
const res1 = flattenObj({ a: 1, b: { c: 2, d: { e: 3 } } });
console.log(res1); // {a: 1, c: 2, e: 3}
扁平化数组对象
// 多维数组对象转一维数组对象
function flattenArrObj(arr) {
return arr.reduce((all, curr) => {
if (Array.isArray(curr)) {
return [...all, ...flattenArrObj(curr)];
} else if (typeof curr === "object") {
return [...all, flattenObj(curr)];
} else {
return [...all, curr];
}
}, []);
}
const res2 = flattenArrObj([1, 2, { a: 3, b: { c: 4 } }, [5, 6]]);
console.log(res2); // [1, 2, {a: 3, c: 4}, 5, 6]