利用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
(数组元素) 如果返回是 -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)
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);