基本类型
方式一
function noRepeat(arr){
var newArr = [];
var arrLength = arr.length;
for (var i = 0; i < arrLength; i++) {
// 如果当前数组项在新数组中不存在,插入新数组
if (newArr.indexOf(arr[i]) === -1) {
newArr.push(arr[i]);
}
}
return newArr;
}
方式二
let newNameArr = [...new Set(nameArr)]
引用类型(对象)
根据对象的某个属性去重
方式一
/**
* @params arr 要去重的数组
* @params pro 数组中对象的某个属性
* @returns arr 去重后的数组
*/
function noRepeatObj (arr, pro) {
var hash = {};
arr = arr.reduce(function (item, next) {
hash[next[pro]] ? '' : hash[next[pro]] = true && item.push(next);
return item
}, []);
return arr;
}
方式二
/**
* @params arr 要去重的数组
* @params pro 数组中对象的某个属性
* @returns res 去重后的数组
*/
function noRepeatObj (arr, pro) {
var res = []
for (var i = 0, arrLen = arr.length; i < arrLen; i++) {
for (var j = 0, resLen = res.length; j < resLen; j++) {
if (arr[i][pro] === res[j][pro]) {
break
}
}
if (j === resLen) {
res.push(arr[i])
}
}
return res
}
根据对象整体去重
方式一
/**
* @desc 去除完全相同的对象
* @params arr 要去重的数组
* @returns res 去重后的数组
*/
function noRepeatObj (arr) {
var newArr = Array.from(
new Set(
arr.map( v => JSON.stringify(v) )
)
).map( v=>JSON.parse(v) )
return newArr
}
网站导航
网站导航