Open madfour opened 3 years ago
flat()
。前提是必须确定数组是几维的arr_flat = arr.flat(Infinity); // 如上题中是4维的,那么:let flatArr = arr.flat(4)
function flatten(arr) {
while(arr.some(item=>Array.isArray(item))) {
arr = [].concat(...arr);
}
return arr;
}
reduce
function flatten(arr){
return arr.reduce((result, item) => {
return result.concat(Array.isArray(item) ? flatten(item) : item)
}, [])
}
let str = JSON.stringify(arr);
let flatArr = JSON.parse('[' + str.replace(/(\[|\])/g, '') + ']')
// join
function flatten2(arr) {
return arr.join(',').split(',').map(function(item) {
return parseInt(item); // 直接return item;则会得到类似这种["", "", ""]
})
}
// [1, 2, 2, 3, 4, 5, 5, 6, 7, 8, 9, 11, 12, 12, 13, 14, 10]
// toString
function flatten(arr) {
return arr.toString().split(',').map(function(item) {
return Number(item); // 直接return item;则会得到类似这种["", "", ""]
})
}
// [1, 2, 2, 3, 4, 5, 5, 6, 7, 8, 9, 11, 12, 12, 13, 14, 10]
数组扁平化
有如下数组:var arr = [ [1, 2, 2], [3, 4, 5, 5], [6, 7, 8, 9, [11, 12, [12, 13, [14] ] ] ], 10];
编写一个程序将数组扁平化去并除其中重复部分数据,最终得到一个升序且不重复的数组
上面的代码 等同于 下面: