1. 程式人生 > >獲取陣列中重複的元素

獲取陣列中重複的元素

第一種,判斷包含基本型別的陣列中的重複元素

/**
 * (這裡只是判斷基本型別的元素)
 * @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 }