js es6匹配两个数组或匹配数组对象的方法
js es6 匹配两个数组对象比较两个数组是否含有相同项、过滤掉两个数组中对象属性值相等的项。
·
主要介绍 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)
更多推荐
已为社区贡献29条内容
所有评论(0)