穿梭框数组去重(指定key相同的元素全部不保留)

412 阅读1分钟
function filterRepeat(arr1, arr2, key, filterType) {
  let concatArray = [] // 合并后新数组
  let filterRepeatArray = []
  let deleteIndex = [] //被删除的元素下标
  concatArray = arr1.concat(arr2)
  filterRepeatArray = concatArray
  const keyArray = []
  concatArray.map(item => keyArray.push(item[key])) //key 为可配置Id
  keyArray.map((item, index) => {
    if (keyArray.indexOf(item) !== keyArray.lastIndexOf(item)) {
      deleteIndex.push(index)
    }
  })
  if (deleteIndex.length === 0 && filterType === 'search') { //当无重复值时,数组A不与数组Bconcat
    filterRepeatArray = arr1
  } else {
    deleteIndex.map((item, index) => {
      filterRepeatArray.splice(item - index, 1) // 删除一项 数组长度-1
    })
  }
  return filterRepeatArray
}
export { filterRepeat }