Set 对象如何清除数组中的所有重复项,什么是调节和多重设置?



Set.prototype如何清除此算法中的任何重复项?

该函数的目的是获取未定义数量的参数(数组(,并从每个数组返回一个唯一值的新数组。

例如,uniqueNums([2, 3, 4, 51], [23, 41, 3, 4, 51, 2], [2, 3, 99])将返回一个array[2, 3, 4, 51, 23, 41, 51, 99]

function uniqueNums(...arrays) {
const flatArray = [].concat(...arrays);
return [...new Set(flatArray)];
}

什么是regulatmultiset

首先,concat用于从所有从属数组创建单层深度数组。

然后,new Set(flatArray)flatArray创建一个可迭代的新集合。从本质上讲,这会创建一个集合并为flatArray中的每个条目调用addSet#add不会添加集合中已有的值,因此new Set(flatArray)提供一组唯一值(集合的点是唯一值(。

然后,[...theSet]使用展开语法来获取Set(这也是可迭代的(并创建一个新的唯一条目的平面数组。

例如,该代码实际上是这样的:

function uniqueNums(...arrays) {
const flatArray = [].concat(...arrays);
// Create the set
const set = new Set();
// Add the entries; calling `add` with a value that's already in the set
// doesn't do anything
for (const entry of flatArray) {
set.add(entry);
}
// Now `set` has unique values; get an array of them
const result = [];
for (const entry of set) {
result.push(entry);
}
// Return the array
return result;
}

最新更新