JS 数组去重
1.ES5常用:利用for嵌套for,然后splice去重
//数组去重
export const publicnoRepeat = (arr) => {
var newArr = […new Set(arr)]; //利用了Set结构不能接收重复数据的特点
return newArr
}
使用
var ARY publicnoRepeat([0,4,5,6,4,5 ])
//console.log(‘ARY’, ARY);
//0,4,5,6,
对象去重
export const publicunique = (arr, key) => {
for (var i = 0; i < arr.length; i++) { // 首次遍历数组
for (var j = i + 1; j < arr.length; j++) { // 再次遍历数组
if (arr[i][key] == arr[j][key]) {
// 判断连个值是否相等
arr.splice(j, 1); // 相等删除后者
j–;
}
}
}
return arr
}
使用 var Ary = publicunique(BoxDatasort.value, “groupName”)
利用Map数据结构去重
function arrayNonRepeatfy(arr) {
let map = new Map();
let array = new Array(); // 数组用于返回结果
for (let i = 0; i < arr.length; i++) {
if(map .has(arr[i])) { // 如果有该key值
map .set(arr[i], true);
} else {
map .set(arr[i], false); // 如果没有该key值
array .push(arr[i]);
}
}
return array ;
}
var arr = [1,1,‘true’,‘true’,true,true,15,15,false,false, undefined,undefined, null,null, NaN, NaN,‘NaN’, 0, 0, ‘a’, ‘a’,{},{}];
console.log(unique(arr))
//[1, “a”, “true”, true, 15, false, 1, {…}, null, NaN, NaN, “NaN”, 0, “a”, {…}, undefined]