利用Es6中新的数据结构
Set
,Set
它类似于数组,但是成员的值都是唯一的,没有重复的值。可以通过搭配Array.from()
转换为真实数组。let num = [2, 0, 1, 4, 9, 7, 5, 1, 2, 0]; function unique(arr) { return Array.from(new Set(arr)); } console.log(unique(num));
- 利用indexOf。遍历旧数组,然后拿着旧数组元素去查询新数组,如果该元素在新数组里面没有出现过,我们就添加,否则不添加。利用 新数组
.indexOf
(数组元素) 如果返回是 -1 就说明 新数组里面没有改元素。let num = [2, 0, 1, 4, 9, 7, 5, 1, 2, 0]; let newArr = [] for (let i = 0; i < num.length; i++) { if (newArr.indexOf(num[i]) === -1) { newArr.push(num[i]); } } console.log(newArr)
- 双重循环配合splice进行去重,使用了两个嵌套的
for
循环来比较数组中的元素。外部的for
循环遍历数组中的每个元素,而内部的for
循环则从当前元素之后的位置开始,逐个与其他元素比较。当发现数组中的两个元素相等时,通过splice
方法将重复出现的元素从数组中删除。splice
方法的第一个参数是要删除的元素的索引,第二个参数是要删除的元素个数。然后通过将j
减1,以便在删除元素后正确地继续检查剩余的元素。let num = [2, 0, 1, 4, 9, 7, 5, 1, 2, 0]; let newNum = []; function unique(arr) { for (let i = 0; i < arr.length; i++) { for (let j = i + 1; j < arr.length; j++) { if (arr[i] === arr[j]) { arr.splice(j, 1); j--; } } } return arr; } console.log(unique(num));
使用filter:通过Array的
filter
方法和indexOf
或者includes
来筛选出不重复的元素。filter
方法接收一个回调函数作为参数。在这个例子中,回调函数接受三个参数:value
:当前正在被处理的元素值。index
:当前元素的索引。self
:数组本身。let num = [2, 0, 1, 4, 9, 7, 5, 1, 2, 0]; let newArr = num.filter((value, index, self) => { return self.indexOf(value) === index; }) console.log(newArr);
数组去重的方法
2024-01-11 01:58:01 32 阅读