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