返回
去重技巧大集合:七种方法玩转数组去重
前端
2024-02-17 20:27:37
一、JavaScript原生方法
JavaScript原生方法中,我们可以使用indexOf()方法和lastIndexOf()方法来实现数组去重。indexOf()方法返回指定元素在数组中第一次出现的位置,lastIndexOf()方法返回指定元素在数组中最后一次出现的位置。我们可以利用这两个方法来过滤掉数组中的重复元素。
// 使用indexOf()方法去重
function unique1(arr) {
const result = [];
for (let i = 0; i < arr.length; i++) {
if (result.indexOf(arr[i]) === -1) {
result.push(arr[i]);
}
}
return result;
}
// 使用lastIndexOf()方法去重
function unique2(arr) {
const result = [];
for (let i = 0; i < arr.length; i++) {
if (result.lastIndexOf(arr[i]) === -1) {
result.push(arr[i]);
}
}
return result;
}
二、ES6语法
ES6中,我们可以使用Set数据结构来实现数组去重。Set是一种集合数据结构,它可以自动过滤重复元素。
// 使用Set去重
function unique3(arr) {
return [...new Set(arr)];
}
三、集合
集合是一种数据结构,它可以存储唯一元素。我们可以使用集合来实现数组去重。
// 使用集合去重
function unique4(arr) {
const set = new Set(arr);
return [...set];
}
四、Map
Map是一种数据结构,它可以存储键值对。我们可以使用Map来实现数组去重。
// 使用Map去重
function unique5(arr) {
const map = new Map();
for (let i = 0; i < arr.length; i++) {
map.set(arr[i], true);
}
return [...map.keys()];
}
五、Array.filter
Array.filter()方法可以过滤数组中的元素。我们可以使用Array.filter()方法来实现数组去重。
// 使用Array.filter()去重
function unique6(arr) {
return arr.filter((item, index) => arr.indexOf(item) === index);
}
六、Array.from
Array.from()方法可以将类数组对象转换为数组。我们可以使用Array.from()方法和Set数据结构来实现数组去重。
// 使用Array.from()和Set去重
function unique7(arr) {
return Array.from(new Set(arr));
}
七、Array.reduce
Array.reduce()方法可以将数组中的元素归并为一个值。我们可以使用Array.reduce()方法和Set数据结构来实现数组去重。
// 使用Array.reduce()和Set去重
function unique8(arr) {
return arr.reduce((set, item) => set.add(item), new Set()).values();
}
总结
以上七种方法都可以实现数组去重。我们可以根据不同的场景选择最合适的方法。
- 如果数组中的元素是简单的数据类型,如数字、字符串等,我们可以使用JavaScript原生方法或ES6语法。
- 如果数组中的元素是复杂的数据类型,如对象等,我们可以使用集合、Map或Array.reduce()方法。
- 如果我们需要对数组进行多次去重操作,我们可以使用Array.filter()方法或Array.from()方法。