利用标记法:
/ for (var i = 0; i < arr.length; i++) {
var flag = 1;
for (var j = 0; j < newarr.length; j++) {
if (arr[i] === newarr[j]) { //当前值和新数组每一项进行比较,存在新数组,flag = 2
flag = 2; //存在
}
}
if (flag === 1) { //满足条件,不存在新数组,添加进去。
newarr.push(arr[i]); //[12]
}
}
console.log(arr);
console.log(newarr);
indexOf方法:思路:利用indexof找不到返回-1这个特性,让新数组利用这个方法,找不到就全push进去,
/ var arr = [12, 12, 12, 3, 569, 78, 0, -56, 12, 3, 569, 78, 0, -56, 12, 3, 569, 78, 0, -56];
var newarr = [];
for (var i = 0; i < arr.length; i++) {
if (newarr.indexOf(arr[i]) === -1) { //当前的值在数组中不存在。
newarr.push(arr[i]);
}
}
console.log(newarr);// [12, 3, 569, 78, 0, -56]
filter方法:
var arr = [12, 12, 12, 3, 569, 78, 0, -56, 12, 3, 569, 78, 0, -56, 12, 3, 569, 78, 0, -56];
var newarr = arr.filter(function(value, index, array) {
//index:数组项的索引
//array.indexOf(value):获取的是第一次value这个值的索引。
return array.indexOf(value) === index; //数字是第一次出现的才满足条件,第二次出现不满足。
//12-> 0 === 0
//12-> 0 === 1
});
console.log(newarr);//[12, 3, 569, 78, 0, -56]