1. Javascript数组去重
在JavaScript中,有多种方法可以实现数组去重。
这里我将提供几种常见的方法来帮助你理解和实现。
1.1. 方法 1: 使用 Set 和 Spread Operator
function unique(array) {
return [...new Set(array)];
}
let arr = [1, 2, 2, 3, 4, 4, 5];
console.log(unique(arr)); // 输出 [1, 2, 3, 4, 5]
1.2. 方法 2: 使用 filter()
这种方法是通过遍历数组,并且对于每一个元素检查它是否在之后的部分再次出现。
如果一个元素后面没有相同的元素,则保留该元素。
function unique(array) {
return array.filter((item, index, arr) => arr.indexOf(item) === index);
}
let arr = [1, 2, 2, 3, 4, 4, 5];
console.log(unique(arr)); // 输出 [1, 2, 3, 4, 5]
1.3. 方法 3: 使用 reduce() 和 Set
function unique(array) {
return Array.from(new Set(array));
// 或者使用 reduce 实现
// return array.reduce((acc, item) => acc.includes(item) ? acc : [...acc, item], []);
}
let arr = [1, 2, 2, 3, 4, 4, 5];
console.log(unique(arr)); // 输出 [1, 2, 3, 4, 5]
1.4. 方法 4: 使用 Object 或 Map
利用对象的键值对特性来存储数组中的元素,并以键的形式存储唯一的元素。
function unique(array) {
let obj = {};
let result = [];
for (let i = 0; i < array.length; i++) {
if (!obj[array[i]]) {
obj[array[i]] = true;
result.push(array[i]);
}
}
return result;
}
let arr = [1, 2, 2, 3, 4, 4, 5];
console.log(unique(arr)); // 输出 [1, 2, 3, 4, 5]
每种方法都有其适用场景,选择哪种取决于你的具体需求以及浏览器或环境的支持情况。
例如,Set 对象是一个较新的特性,在一些旧的浏览器中可能需要 polyfill 支持。而使用 filter() 或者 reduce() 可能更易于理解,并且不需要额外的 polyfill。