检查对象数组是否是另一个对象数组的子集 [英] Check if an array of object is subset of another array of object

查看:110
本文介绍了检查对象数组是否是另一个对象数组的子集的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这就是我正在尝试的.

var object1 = {name: 'one', psno:'34'};
var object2 = {name: 'two', psno:'34'};
var object3 = {name: 'three', psno:'345'};
var arr1 = [object1,object2,object3];
var arr2 = [object1,object2];
// solution
var names = arr1.map(function(obj) { 
  return obj.name; 
});
var isSuperset = arr2.every(function(val) { 
  return names.indexOf(val) >= 0;
});
alert(isSuperset);

它返回false而不是true.我要去哪里错了.

It returns false instead of true. Where I am going wrong.

推荐答案

那是因为您在检查.indexOf

var object1 = {
  name: 'one',
  psno: '34'
};
var object2 = {
  name: 'two',
  psno: '34'
};
var object3 = {
  name: 'three',
  psno: '345'
};
var arr1 = [object1, object2, object3];
var arr2 = [object1, object2];
// solution
var names = arr1.map(function(obj) {
  return obj.name;
});
var isSuperset = arr2.every(function(val) {
//Ive changed this line!
  return names.indexOf(val.name) >= 0;
});
alert(isSuperset);

JS Fiddle在这里: https://jsfiddle.net/waqmafsa/

JS Fiddle here: https://jsfiddle.net/waqmafsa/

这篇关于检查对象数组是否是另一个对象数组的子集的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆