已知如下数组:var arr = [ [1, 2, 2], [3, 4, 5, 5], [6, 7, 8, 9, [11, 12, [12, 13, [14] ] ] ], 10];编写一个程序将数组扁平化去并除其中重复部分数据,最终得到一个升序且不重复的数组
第一种方法:
// 扁平化
let flatArr = arr.flat(Infinity)
// 去重
let disArr = Array.from(new Set(flatArr))
// 排序
let result = disArr.sort((a, b) => {
return a-b
})
console.log(result)
第二种方法:
const list1 = Array.from(new Set(arr.flat(Infinity))).sort((a, b) => a - b);
console.log(list1);
第三种方法:
Array.prototype.flat = function () {
return [].concat(...this.map(item => (Array.isArray(item) ? item.flat() : [item])));
}
Array.prototype.unique = function () {
return [...new Set(this)]
}
const sort = (a, b) => a - b;
console.log(arr.flat().unique().sort(sort));
第四种方法:
function flatten(arr) {
while (arr.some(item => Array.isArray(item))) {
arr = [].concat(...arr);
}
return arr;
}
const list4 = Array.from(new Set(flatten(arr))).sort((a, b) => {
return a - b
})
console.log(list4)