方法
一、利用ES6 Set去重(ES6中最常用)
二、利用for嵌套for,然后splice去重(ES5中最常用),双层循环,外层循环元素,内层循环时比较值。值相同时,则删去这个值。
三、利用indexOf去重,新建一个空的结果数组,for 循环原数组,判断结果数组是否存在当前元素,如果有相同的值则跳过,不相同则push进数组。
四、利用sort(),利用sort()排序方法,然后根据排序后的结果进行遍历及相邻元素比对。
算法
方法一
function removeRepeat(arr) {
var newarr= arr.filter(function(element, index, arr) {
return arr.indexOf(element) == index;
//return后面是数组的筛选条件,不是布尔值
});
console.log(newarr);
}
indexOf找出数组中某个元素第一次出现的位置,
filter找出符合函数中条件的数组数据。
方法二
function removeRepeat(arr) {
var newarr = [];
for(var i=0; i<arr.length; i++) {
if((newarr.indexOf(arr[i])) < 0) {
newarr.push(arr[i]);
}
}
console.log(newarr);
}
for循环遍历数组,定义一个新数组,indexOf<0来判断新数组中有没有某个值,没有就push进新数组。
方法三
function removeRepeat(arr) {
var newarr = [];
var json = {};
for(let i = 0; i < arr.length; i++) {
if(!json[arr[i]]) {
json[arr[i]] = 1; //标记arr[i]已经存在,只是标记作用
newarr.push(arr[i]);
}
}
console.log(newarr);
}
遍历数组,定义一个新数组和对象,对象的索引为数组元素。