首先需要了解什么是数组扁平化?
数组扁平化是指将一个多维数组变为一维数组。
// 要求实现:
// let givenArr = [[1, 2, 2], [3, 4, 5, 5], [6, 7, 8, 9, [11, 12, [12, 13, [14]]]], 10];
// let outputArr = [1,2,2,3,4,5,5,6,7,8,9,11,12,12,13,14,10]
// 实现flatten方法使得
// flatten(givenArr)——>outputArr
相关解决办法:
let givenArr = [[1, 2, 2], [3, 4, 5, 5], [6, 7, 8, 9, [11, 12, [12, 13, [14]]]], 10];
function flatten (arr) {
return arr.reduce((result, item) => {
return result.concat(Array.isArray(item) ? flatten(item) : item)
}, [])
}
console.log(flatten(givenArr))
let givenArr = [[1, 2, 2], [3, 4, 5, 5], [6, 7, 8, 9, [11, 12, [12, 13, [14]]]], 10];
function flatten (arr) {
return arr.toString().split(',').map((item) => {
return Number(item)
})
}
console.log(flatten(givenArr))
let givenArr = [[1, 2, 2], [3, 4, 5, 5], [6, 7, 8, 9, [11, 12, [12, 13, [14]]]], 10];
function flatten(arr) {
return arr.join(',').split(',').map((item) => {
return parseInt(item);
})
}
console.log(flatten(givenArr))
let givenArr = [[1, 2, 2], [3, 4, 5, 5], [6, 7, 8, 9, [11, 12, [12, 13, [14]]]], 10];
function flatten (arr) {
let res = []
arr.map((item) => {
if (Array.isArray(item)) {
res = res.concat(flatten(item))
} else {
res.push(item)
}
})
return res
}
console.log(flatten(givenArr))
let givenArr = [[1, 2, 2], [3, 4, 5, 5], [6, 7, 8, 9, [11, 12, [12, 13, [14]]]], 10];
function flatten(arr) {
while(arr.some(item => Array.isArray(item))) {
arr = [].concat(...arr);
}
return arr;
}
console.log(flatten(givenArr))
参考链接1:https://juejin.im/post/5adc8e396fb9a07aa0479725
参考链接2:https://juejin.im/post/5ca97d4b6fb9a05e2a302804