一、題目
題目:將以下數(shù)組扁平化叉钥,返回一個(gè)沒(méi)有重復(fù)值且升序的數(shù)組
例子:
//輸入:
let arr = [
[1, 2, 3],
[3, 4, 5, 5],
[6, 7, 8, 9, [11, 12, [12, 13]]],
];
//輸出:[1,2,3,4,5,6,7,8,9,11,12,13]
二罢缸、解決方案
思路:1、先將數(shù)組扁平化投队;2枫疆、去重;3敷鸦、排序
方法一:原生屬性寫(xiě)法
function flatten(arr) {
let result = [];
let len = arr.length;
for (let i = 0; i < len; i++) {
if (Array.isArray(arr[i])) {
// concat() 方法用于合并兩個(gè)或多個(gè)數(shù)組息楔。此方法不會(huì)更改現(xiàn)有數(shù)組,而是返回一個(gè)新數(shù)組扒披。
result = result.concat(flatten2(arr[i]));
} else {
result.push(arr[i]);
}
}
return Array.from(new Set(result));
}
方法二:使用ES6的flat+new Set
function flatten(arr) {
return Array.from(new Set(arr.flat(Infinity))).sort((a, b) => {
return a - b;
});
}