问题
将数组扁平化并取出其中重复数据,最终得到一个升序且不重复的数组
var arr = [
[1, 2, 2],
[3, 4, 5, 5],
[6, 7, 8, 9, [11, 12, [12, 12, [13]]]],
10
];
//1.数组扁平化
//2.去重
//3.排序
Array.prototype.flat = function() {
//注意这里不能使用箭头函数,原因是要调用里面的this,而箭头函数他的this只能是继承而来的
//对数组进行遍历处理,如果里面的元素是数组的话,就递归调用,如果是直接的一个元素的话,就返回一个值
//map()方法就是对数组的每个元素进行处理
const result = this.map(item => {
//如果它是一个数组,我们需要做递归处理
if (Array.isArray(item)) {
return item.flat();
}
//如果不是一个数组的话就返回元素本身
return [item]
})
return [].concat(...result);
};
//2.去重
Array.prototype.unique = function() {
return [...new Set(this)];
}
//3.排序
const sortFn = (a, b) => a - b;
arr.flat().unique().sort(sortFn);
最终的结果: