下面是“js 数组去重的四种实用方法”的完整攻略:
一、使用 Set 数据结构
ES6 中提供了 Set 数据结构,它类似于数组,但是成员的值都是唯一的,没有重复的值。我们可以利用 Set 数据结构去重。
示例代码如下:
let arr = [1, 2, 3, 2, 1];
let set = new Set(arr); //set {1, 2, 3}
let newArr = Array.from(set); // [1, 2, 3]
通过 Set 的构造函数,我们将 arr 转换为 set,然后通过 Array.from 方法将 set 转换为数组,得到的 newArr 就是去重后的数组。
二、利用 indexOf 判断元素是否存在
对于一个值已知的数组,我们可以利用 indexOf 方法判断该元素是否已经存在于新的数组中,如果不存在则将其添加进去。
示例代码如下:
function uniq(array){
let temp = [];
for(let i = 0; i < array.length; i++){
if(temp.indexOf(array[i]) === -1){
temp.push(array[i]);
}
}
return temp;
}
let arr = [1, 2, 3, 2, 1];
console.log(uniq(arr)); // [1, 2, 3]
我们定义了一个 uniq 函数,利用 for 循环遍历原数组,然后通过 indexOf 方法判断该元素是否已经存在于新数组 temp 中,不存在就将其添加到 temp 中,最后返回 temp。
三、利用 filter 方法
我们可以利用 filter 方法遍历原数组,返回符合指定条件的元素组成的新数组。
示例代码如下:
function uniq(array){
let newArray = array.filter((element, index, self) => {
return self.indexOf(element) === index;
});
return newArray;
}
let arr = [1, 2, 3, 2, 1];
console.log(uniq(arr)); // [1, 2, 3]
我们定义了一个 uniq 函数,利用 filter 方法遍历原数组,返回符合指定条件的元素组成的新数组,其中指定的条件是元素在原数组中的位置等于其在新数组中的位置。
四、利用 Map 数据结构
我们还可以利用 Map 数据结构来进行数组去重。与 Set 类似,Map 也可以用来过滤重复的数组元素。
示例代码如下:
function uniq(array){
let map = new Map();
let newArray = [];
for(let i = 0; i < array.length; i++){
if(map.has(array[i])){
map.set(array[i], true);
} else {
map.set(array[i], false);
newArray.push(array[i]);
}
}
return newArray;
}
let arr = [1, 2, 3, 2, 1];
console.log(uniq(arr)); // [1, 2, 3]
我们定义了一个 uniq 函数,利用 for 循环遍历数组,利用 Map 判断该元素是否已经存在于新数组中,如果已经存在,则将该元素的 key 值设为 true,否则将该元素的 key 值设为 false,并将该元素添加到新数组中。最后返回新数组。
以上就是“js 数组去重的四种实用方法”的完整攻略,希望能对你有所帮助!
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:js 数组去重的四种实用方法 - Python技术站