算法题:任意多维嵌套数组转换为一维数组
本文写于 2017 年,距今已有 9 年,文中提及的技术方案与接口可能已经过时,请注意甄别参考。
任意多维嵌套数组转换为一维数组
给定一个任意嵌套的多维数组将其转换为一维数组,数组中元素仅基本类型的元素或数组,不存在循环引用。
转换结果如下:
//[3, [2, -4, [5, 7]], -3, ['aa', [['bb']]]] => [3, 2, -4, 5, 7, -3, "aa", "bb"]var arr = [3, [2, -4, [5, 7]], -3, ['aa', [['bb']]]];
//方法1
function flatten(arr) {
var newArr = [];
function _flat(arr) {
arr.forEach(val => {
if (Array.isArray(val)) {
_flat(val);
} else {
newArr.push(val);
}
})
}
_flat(arr);
return newArr
}
//方法2
function flatten(arr) {
return arr.reduce(function(initArr, currentArr) {
return initArr.concat(Array.isArray(currentArr) ? flatten2(currentArr) : currentArr);
}, []);
}若有共鸣,不妨点个喜欢
本文地址:https://www.mingsixue.com/blog/detail/algorithm-Multidimensional-nested-array-to-one-array
文章若需转载,请附上原文链接,谢谢配合。^_^