主要介绍 js 匹配两个数组对象的方法,实例代码介绍了判断两个数组用的id是否相等

 判断两个数组用的id是否相等

 模拟一些数据:

let list = [
    {
      label: "小红",
      id: 1003,
    },
    {
      label: "小明",
      id: 1004,
    },
    {
      label: "小李",
      id: 1005,
    },
    {
      label: "小王",
      id: 1006,
    },
  ],
  list2 = [
    {
      label: "小红",
      id: 1003,
    },
    {
      label: "小明",
      id: 1004,
    },
  ];

  希望得到的数据:筛选出相同项组成新的数组

let newArr = list.filter((v) => list2.some((val) => val.id == v.id))

console.log('newArr', newArr)

 方法二

let newArr = list.map(i=>i.id)
let newArr2 = list2.filter(i => newArr.includes(i.id))
console.log('newArr', newArr) // newArr (4) [1006, 1003, 1004, 1005]
console.log('newArr', newArr2)

方法三 

let newArr = list.map(i=>i.id)
let newArr2 = list2.filter(i => newArr.indexOf(i.id) > -1)
console.log('newArr', newArr) // newArr (4) [1006, 1003, 1004, 1005]
console.log('newArr', newArr2)

方法四 

let newArr = []
list.filter((i) => newArr.push(i.id))
let newArr2  = list2.filter((i) => newArr.indexOf(i.id) !== -1)

console.log('newArr', newArr) // newArr (4) [1006, 1003, 1004, 1005]
console.log('newArr', newArr2)

方法五 

let newArr = []

list.forEach(i => {
	list2.forEach(j => {
		if(i.id == j.id) newArr.push(i)
	})
})

console.log('newArr', newArr)

方法六 

let newArr = []

for (let i = 0; i < list2.length; i++) {
  let obj = list2[i];
  for (let j = 0; j < list.length; j++) {
    let boj2 = list[j];
    if (obj.id === boj2.id) {
      newArr.push(boj2);
      break;
    }
  }
}

console.log('newArr', newArr) 

 打印筛选出相同项的结果

 希望得到的数据:筛选出不相同项组成新的数组

 引用上面的代码改造一下也可以实现筛选出不相同项,以下指出相关方式。

let newArr = list.filter((v) => !list2.some((val) => val.id == v.id))

console.log('newArr', newArr)

 方法二

let newArr = list.filter((v) => list2.every((val) => val.id != v.id)) 

console.log('newArr', newArr)

 方法三

let newArr = list2.map((i) => i.id)
let newArr2 = list.filter(i => !newArr.includes(i.id))

console.log('newArr', newArr) // newArr (2) [1003, 1004]
console.log('newArr', newArr2)

 

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐