js 两个数组对象如何判断是否有不相同的元素

如题,现有两个数组

arr1 = [
    {'name': '笔记本' , 'value' : '2', 'type' : '1'},
    {'name': '记事本' , 'value' : '3', 'type' : '1'},
    {'name': '书本' , 'value' : '3', 'type' : '1'},
    {'name': '笔本' , 'value' : '2', 'type' : '1'},
    {'name': '笔记本' , 'value' : '4', 'type' : '1'}
  ]

arr2 = [
    {'name': '笔记本' , 'value' : '2', 'type' : '1' , num: '22', default: true},
    {'name': '记事本' , 'value' : '3', 'type' : '1', num: '22', default: true},
    {'name': '黑板' , 'value' : '6', 'type' : '2', num: '22', default: true},
    {'name': '画板' , 'value' : '5', 'type' : '1', num: '22', default: true},
    {'name': '书本' , 'value' : '3', 'type' : '1', num: '22', default: true},
    {'name': '笔本' , 'value' : '2', 'type' : '1', num: '22', default: true},
    {'name': '笔记本' , 'value' : '4', 'type' : '1', num: '22', default: true}
  ]

要判断arr1里所有元素的name跟value是否与arr2的元素的name和value有完全匹配项,如果arr1里有一个对象里的name与value在arr2中不存在,则返回false,应该如何解决

阅读 5k
1 个回答
const map = {};
arr1.forEach(i => {
    map[`${i.name}_${i.value}`] = true;
});

const isSame = arr2.every(x => map[${x.name}_${x.value}]);

console.log('是否全部相同', isSame);

试试

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题