1.双重for循环加flag
function duplicate1(arr) { let result = []; for(let i =0 ; i< arr.length ; i++){ let flag = true; for(let j = 0 ; j< result.length ; j++){ if(arr[i].recordId === result[j].recordId){ flag = false; } } if(flag){ result.push(arr[i]); } } return result; }
2.新建一个对象,将数组中每一项的键对应的值作为新对象的键,遍历数组判断新对象是否存在键,不存在放入数组中
function duplicate2(arr) { let obj= {}, result= []; for (let i = 0; i < arr.length; i++) { let item = arr[i]; if (!obj[item.recordId]) { obj[item.recordId] = result.push(item); } } return result; }
3.利用归并方法reduce
function duplicate3(arr) { let obj = {}, result = []; result = arr.reduce((prev, cur) => { obj[cur.recordId] ? '' : obj[cur.recordId] = prev.push(cur); return prev; }, []) return result; }
待补充。。。。
大佬分享下你们的好方法啊