两个数组对比过滤掉重复的值

arrFilter(val1, val2, key1, key2) {
      const val = [] // 保存遍历时要留下的项
      const res = []
      for (let len = 0; len < val1.length; len++) {
        const item = val1[len]
        let isExist = false
        for (let j = 0; j < val2.length; j++) {
          const keys = val2[j][key1 || key2]
          if (item[key1 || key2] == keys) {
            isExist = true
            break
          }
        }
        if (!isExist) {
          val.push(item)
        } else {
          res.push(item)
        }
      }

      for (let i = 0, len = val.length; i < len; i++) {
        for (let j = i + 1; j < len; j++) {
            if (val[i][key1 || key2] == val[j][key1 || key2]) {
                val.splice(j, 1)
                // splice 会改变数组长度,所以要将数组长度 len 和下标 j 减一
            }
        }
      }

      return { val, res }
    }
posted @ 2022-05-27 09:43  谎渊  阅读(247)  评论(0)    收藏  举报