/*
* 最基本的去重方法
* 思路:定义一个新数组,并存放原数组的第一个元素,然后将元素组一一和新数组的元素对比,若不同则存放在新数组中。
*/
function unique(arr) {
var resArr = [arr[0
]];
for (
var i = 1; i < arr.length; i++
) {
var repeat =
false;
for (
var j = 0; j < resArr.length; j++
) {
if (arr[i] ==
resArr[j]) {
repeat =
true;
break;
}
}
!repeat &&
resArr.push(arr[i]);
}
return resArr;
}
/*
* 利用对象的属性去重(推荐)
* 思路:每次取出原数组的元素,然后在对象中访问这个属性,如果存在就说明重复
*/
function unique(arr) {
var resArr =
[];
var json =
{};
for (
var i = 0; i < arr.length; i++
) {
if (!
json[arr[i]]) {
resArr.push(arr[i]);
json[arr[i]] = 1
;
}
}
console.log(json);
return resArr;
}
/*
* 利用下标查询
* 新建一新数组,遍历传入数组,值不在新数组就push进该新数组中
* IE8及其以下版本不支持数组的indexOf方法
*/
function unique(array) {
var temp =
[];
for (
var i = 0; i < array.length; i++
) {
( temp.indexOf(array[i]) == -1 ) &&
temp.push(array[i]);
}
return temp;
}
/*
* 排序后相邻去除法
* 给传入数组排序,排序后相同值相邻,
* 然后遍历时,新数组只加入不与前一值重复的值。
* 会打乱原来数组的顺序
*/
function unique(array) {
array.sort(); //数组在原数组上进行排序,不生成副本
var temp = [ array[0
] ];
for (
var i = 0; i < array.length; i++
) {
( array[i] !== temp[temp.length - 1] ) &&
temp.push(array[i]);
}
return temp;
}
/*
* 实现思路:如果当前数组的第i项在当前数组中第一次出现的位置不是i,
* 那么表示第i项是重复的,忽略掉。否则存入结果数组。
* array.indexOf(item,start)方法可返回数组中某个指定的元素位置
*/
function unique(array) {
var temp =
[];
for (
var i = 0; i < array.length; i++
) {
( array.indexOf(array[i]) == i ) &&
temp.push(array[i]);
}
return temp;
}
// ES6
let arr = [1,2,1,4,2,6,1,5
];
let s =
new Set(arr);
let res = [...
new Set(arr)];
转载于:https://www.cnblogs.com/jianglibaizhi/p/10573045.html
相关资源:vue中对象数组去重的实现