vue 如何判断一个数组包含另一个数组?

let arr1 = [

{id: 1, name: 'A'},

{id: 2, name: 'B'},

{id: 3, name: 'C'},

{id: 4, name: 'D'}

]

let arr2 = [

{id: 1, name: 'A'},

{id: 2, name: 'B'}

]

vue如何判断arr1包含arr2?


回答:

我有一个不成熟的方法 ?

JSON.stringify(arr1).includes(JSON.stringify(arr2))


回答:

如果id是唯一的话,可以这么做:

const ids = arr1.map(i => i.id)

const hasSameItem = arr2.some(item => ids.includes(item.id))

上面这个是判断是否含有相同item,如果是判断完全包含的话需要把some换成every


回答:

简单循环版本就是这样,可能循环比较多,还可以优化,比如has2为false, 那就没必要再走has1了,另外就是has2和has1的判断key可能有重复项,也可以优化

arr2.every(item2 => {

const keys2Arr = Object.keys(item2);

return arr1.some(item1 => {

const keys1Arr = Object.keys(item1);

const has2 = keys2Arr.every(x => item2[x] === item1[x]);

const has1 = keys1Arr.every(x => item2[x] === item1[x]);

return has1 && has2;

});

});


回答:

arr2.every(({id})=>arr1.find(item=>item.id === id))

以上是 vue 如何判断一个数组包含另一个数组? 的全部内容, 来源链接: utcz.com/p/933043.html

回到顶部