一、题目
题目:将以下数组扁平化,返回一个没有重复值且升序的数组
例子:
//输入:
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、先将数组扁平化;2、去重;3、排序
方法一:原生属性写法
function flatten(arr) {
let result = [];
let len = arr.length;
for (let i = 0; i < len; i++) {
if (Array.isArray(arr[i])) {
// concat() 方法用于合并两个或多个数组。此方法不会更改现有数组,而是返回一个新数组。
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;
});
}