简体   繁体   English

检查数组是否是另一个数组的子集(但是检查属性)

[英]Checking if an array is a subset of another array (but checking against a property)

I know this works (returns true) 我知道这有效(返回true)

var arr1 = [1, 'a', 2, 'b', 3];
var arr2 = [1, 2, 3];

var isSuperset = arr2.every(function (val) { return arr1.indexOf(val) >= 0; });

However say array1 consists of objects, and I want to check array2 against a certain property of the object: 但是说array1由对象组成,我想针对对象的某个属性检查array2:

var object1 = {name:'one'}
var object2 = {name:'two'}
var object3 = {name:'three'}

var arr1 = [object1,object2,object3];
var arr2 = ['one','two'];
var isSuperset = arr2.every(function (val) { return arr1.indexOf(val) >= 0; });

How can I ensure the every function checks against the name property? 如何确保每个函数都检查name属性?

var object1 = {name: 'one'};
var object2 = {name: 'two'};
var object3 = {name: 'three'};

var arr1 = [object1,object2,object3];
var arr2 = ['one','two'];

// solution
var names = arr1.map(function(obj) { 
  return obj.name; 
});

var isSuperset = arr2.every(function(val) { 
  return names.indexOf(val) >= 0;
});

alert(isSuperset);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM