84669 人学习
152542 人学习
20005 人学习
5487 人学习
7821 人学习
359900 人学习
3350 人学习
180660 人学习
48569 人学习
18603 人学习
40936 人学习
1549 人学习
1183 人学习
32909 人学习
js怎么判断一个数组对象里面有重复的值,并且删除重复的值只保留一个比如 var arr = [{name:'a'},{name:'b'},{name:'c'},{name:'d'},{name:'a'}] 怎么对比
var arr = [{name:'a'},{name:'b'},{name:'c'},{name:'d'},{name:'a'}]
Following the voice in heart.
可以双for循环去找,用第一个和后面挨个对比,重复则删除,在从第二个找,在向后对比,重复则删除
const del = (arr) => { for( let i=0;i<arr.length;i++) { for(let j=i+1;j<arr.length;j++) { if (arr[i].id==arr[j].id) { arr.splice(j,1); i--; } } } return arr; }
突发奇想写的。。。不知道是否满足所有要求。。。哈哈
方法一:
const del = (arr)=>{ let map = []; for(let i = 0; i < arr.length; i++) { let key = JSON.stringify(arr[i]); if(map.includes(key)) { arr.splice(i, 1); i--; } else { map.push(key); } } return arr; }
方法二:
const del = arr=>Array.from(new Set(arr.map(a=>JSON.stringify(a)))).map(a=>JSON.parse(a))
temp.indexOf ( arr[i].name ) = -1;
res.push(arr[i]);
数组去重方法比较多,你还可以有更好的方法
arr 是一维数组 而且元素是对象。 要处理的内容是该对象下的 name 属性。
name
遍历他,然后在每次遍历的 item 基础上再遍历一次 arr 挨个对比 如果发现重复就留个记录
item
arr
var logger = (a, b) => { console.group('谁重复了?'); console.log('元素:', a); console.log('下标:', b); console.groupEnd(); } // 遍历 arr.filter((item, idx, its) => { // 一旦发现有重复的元素就返回 true (通过 its.some 注意他的两个参数 e 和 idx2) // 无重复的过滤掉 return its.some((e, idx2) => { return (e.name === item.name && idx2 !== idx); }); }).forEach(logger);
// 数组去重// 有key表示是复杂数组去重,根据数组中对象的属性key来去重function arrUniq(arr, key) {
if (!Array.isArray(arr) || arr.length < 2) { return arr; } // 简单数组去重 if (!key) { return Array.from(new Set(arr)); } // 复杂数组去重 var obj = {}, res = []; arr.forEach((item) => { if (!obj[item[key]]) { res.push(item); obj[item[key]] = true; } }); return res;
}
可以双for循环去找,用第一个和后面挨个对比,重复则删除,在从第二个找,在向后对比,重复则删除
突发奇想写的。。。不知道是否满足所有要求。。。哈哈
方法一:
方法二:
temp.indexOf ( arr[i].name ) = -1;
res.push(arr[i]);
数组去重方法比较多,你还可以有更好的方法
原材料
arr 是一维数组 而且元素是对象。 要处理的内容是该对象下的
name
属性。处理思路
遍历他,然后在每次遍历的
item
基础上再遍历一次arr
挨个对比 如果发现重复就留个记录ScreenShot
// 数组去重
// 有key表示是复杂数组去重,根据数组中对象的属性key来去重
function arrUniq(arr, key) {
}