獲取陣列中重複的元素
阿新 • • 發佈:2018-11-09
第一種,判斷包含基本型別的陣列中的重複元素
/** * (這裡只是判斷基本型別的元素) * @param Array * @return Array */ export const getRepeatElement = (array) => { let result = [] let hash = {} array.forEach((item) => { if (item) { if (!hash[item]) { hash[item] = true } else { result.push(item) } } }) result= result.filter((item, index, arr) => arr.indexOf(item) === index) return result }
第二種,判斷包含物件的陣列中的重複元素
/* 去掉物件陣列中屬性和屬性值一樣的物件,返回過濾後的陣列 */ const getNoRepeatObject = (array) => { if (array.length < 2) { return array } let differentObject = [] //放不重複的物件 let sameObject= [] //放重複物件 array.forEach(obj => { let sameArray = differentObject.filter(tempObj => { let isSame = true if(Object.keys(tempObj).length === Object.keys(obj).length) { for (const key in tempObj) { if (!obj.hasOwnProperty(key) || tempObj[key] !== obj[key]) { isSame= false } } } else { isSame = false } if (isSame) { return tempObj } }) if (!sameArray.length) { differentObject.push(obj) } else { sameObject.concat(sameArray) //將重複的物件放到sameObject陣列中,如果需要,也可以返回 } }) if (differentObject.length === 1) { differentObject = [] } return differentObject }