arr = [ [1, 2, 2], [3, 4, 5, 5], [6, 7, 8, 9, [11, 12, [12, 13, [14] ] ] ], 10];
将数组扁平化去并除其中重复部分数据,最终得到一个升序且不重复的数组
首先,arr
是一个多维数组,它包含了一些元素。
接下来,new Set()
使用 Set
对象来创建一个不包含重复元素的集合。Set
对象是 ECMAScript 6 引入的一种新的数据结构,它可以用来存储一组唯一的值。使用 Set
对象的好处是,它会自动去除重复的元素。
然后,Array.from()
方法用于将一个类似数组或可迭代对象转换为一个新的数组。在这里,我们将 Set
对象转换为一个新的数组,这个数组中的元素是 Set
对象中存储的不重复值。
最后,将得到的新数组赋值给变量 ,这个数组包含了原始多维数组中的所有不重复的元素。
function flattenAndRemoveDuplicates(arr) {
// 用于存储扁平化后的元素
var flattenedArr = [];
// 递归函数,用于处理多维数组
function flatten(arr) {
arr.forEach(function(element) {
if (Array.isArray(element)) {
flatten(element); // 递归处理嵌套的数组
} else {
flattenedArr.push(element); // 将非数组元素添加到结果数组中
}
});
}
flatten(arr);
// 使用 Set 对象去除重复元素,然后转换为数组
var uniqueArr = Array.from(new Set(flattenedArr));
// 对数组进行升序排序
var sortedArr = uniqueArr.sort(function(a, b) {
return a - b;
});
return sortedArr;
}
var arr = [[1, 2, 2], [3, 4, 5, 5], [6, 7, 8, 9, [11, 12, [12, 13, [14]]]], 10];
var result = flattenAndRemoveDuplicates(arr);
console.log(result);
使用flat实现
使用 flat()
函数也可以将多维数组扁平化。但是需要注意的是,flat()
函数的参数表示要进行扁平化的层级深度。arr数组中包含有四层嵌套(最内层的嵌套数组共有三层),因此为了确保完全扁平化,需要设置参数为 4。
var arr = [[1, 2, 2], [3, 4, 5, 5], [6, 7, 8, 9, [11, 12, [12, 13, [14]]]], 10];
var flatArr = arr.flat(4);
// 使用 Set 对象去除重复元素,然后转换为数组
var uniqueArr = Array.from(new Set(flatArr));
// 对数组进行升序排序
var sortedArr = uniqueArr.sort(function(a, b) {
return a - b;
});
console.log(sortedArr);