数组去重
简单数组
function unique(arr){
return Array.form(new Set(arr))
}
复杂数组对象不带嵌套循环
// 方法1:利用对象访问属性的方法,判断对象中是否存在key
var result = [];
var obj = {};
for(var i =0; i<arr.length; i++){
if(!obj[arr[i].key]){
result.push(arr[i]);
obj[arr[i].key] = true;
}
}
console.log(result);
reduce 方法, 第一个参数为处理函数, 第二个为空数组
var hash = {};
arr = arr.reduce(function(item, next) {
hash[next.name] ? '' : hash[next.name] = true && item.push(next);
return item
}, [])
console.log(arr);
复杂数组对象带嵌套循环
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]
const arr = [{ id: 1, name: 1 }, { id: 2, name: 2 }, { id: 1, name: 3 }];
function Filter(arr, key){
const newArr = [];
const map = new Map();
for(let i of arr){
if(!map.get(i.id)){
map.set(i.id, i)
newArr.push(i)
}
}
return newArr
}
var a= Filter(arr, 'id');
console.log('a', a)
最后更新于
这有帮助吗?