📅  最后修改于: 2023-12-03 15:38:33.275000             🧑  作者: Mango
在JavaScript中,如果我们需要从一个字符串数组中删除重复的字符串,该怎么做呢?本文将介绍3种方法。
ES6标准引入了Set,它是一个类似于数组的数据结构,其中不允许存在重复的元素。
const arr = ["apple", "banana", "orange", "apple", "orange"];
const uniqueArr = [...new Set(arr)];
console.log(uniqueArr); // ["apple", "banana", "orange"]
我们可以使用Spread运算符(...)将Set生成的对象转换为一个新数组。这个方法简单并且易于理解,但是它只适用于现代浏览器,并且不保证元素的顺序。
这个方法使用一个包含for循环和indexOf的算法,通过遍历原始数组并添加非重复元素到一个新的数组中实现去重。
const arr = ["apple", "banana", "orange", "apple", "orange"];
const uniqueArr = [];
for (let i = 0; i < arr.length; i++) {
if (uniqueArr.indexOf(arr[i]) === -1) {
uniqueArr.push(arr[i]);
}
}
console.log(uniqueArr); // ["apple", "banana", "orange"]
这个方法适用于所有浏览器,但是由于每次循环都会调用indexOf方法,所以对于大型的数组它可能会变得非常慢。
这个方法使用filter()函数和indexOf()函数一起来获取一个新的数组,它可以快速去重一个非常大的数组。
const arr = ["apple", "banana", "orange", "apple", "orange"];
const uniqueArr = arr.filter((item, index) => {
return arr.indexOf(item) === index;
});
console.log(uniqueArr); // ["apple", "banana", "orange"]
这个方法非常简洁和易于理解,它也适用于多数浏览器并且速度比第二种方法要快。
以上三种方法都可以用来删除一个数组中的重复元素,其中Set方法是ES6标准引入的,它非常易于理解和使用,但是只适用于现代浏览器。另外两种方法都是基于遍历数组并一次进行比较的,它们可能会比Set方法慢,但是它们适用于多数浏览器并且可以处理大型数组。