JavaScript删除两个数组中重复的向

Posted 奥特曼 

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaScript删除两个数组中重复的向相关的知识,希望对你有一定的参考价值。

数组1 -  数组2

方案一

 <script>
    const arr1 = [{ id: 1,  name: 'a' }]
    const arr2 = [{ id: 1,  name: 'a'}, { id: 2,name: 'b' }, { id: 3, name: 'c'}]
    const subArr = (arr1, arr2) => {
      let res = []
      arr2.forEach(item => {
       //找到重复的索引 
        const idx = arr1.findIndex(it => {
          if (item.id === it.id) {
            return true
          }
        })
      // 只要没找着(-1)就添加到数组中
        if (idx === -1) {
          res.push(item)
        }
      });
      return res
    }
    console.log(subArr(arr1, arr2));
  </script>

方案二

<script>
    const arr1 = [{ id: 1,  name: 'a' }]
    const arr2 = [{ id: 1,  name: 'a'}, { id: 2,name: 'b' }, { id: 3, name: 'c'}]
    const subArr = (arr1, arr2) => {
      return arr2.filter(item => {
        let idx = arr1.findIndex(it => {
       // 简写 if(item.id===it.id) { return true }
          return (item.id === it.id)
        })
        // filter的方法就是返回一个数组
        return idx === -1
      });
    }
    console.log(subArr(arr1, arr2));
  </script>

方案三

<script>
    const arr1 = [{ id: 1,  name: 'a' }]
    const arr2 = [{ id: 1,  name: 'a'}, { id: 2,name: 'b' }, { id: 3, name: 'c'}]
    const subArr = (arr1, arr2) => {
      return arr2.filter(item => {
        return arr1.some(it => {
          return (item.id !== it.id)
        })
      });
    }
    console.log(subArr(arr1, arr2));
    // 只要不等于返回true  把得到true的对象放在数组中 
    // console.log(arr2.filter(item => arr1.some(it => item.id != it.id)));

 

以上是关于JavaScript删除两个数组中重复的向的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript笔试题(js高级代码片段)

JavaScript 代码片段

javascript常用代码片段

JavaScript单行代码,也就是代码片段

在Javascript中过滤数组[重复]

删除javascript数组中重复对象的所有实例[重复]