最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - Checking if an array is a subset of another array (but checking against a property) - Stack Overflow

programmeradmin0浏览0评论

I know this works (returns 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:

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?

I know this works (returns 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:

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?

Share Improve this question asked Oct 28, 2014 at 22:36 AlwaysNeedingHelpAlwaysNeedingHelp 1,9634 gold badges25 silver badges33 bronze badges 2
  • 3 var arr3 = arr1.map(function(val) { return val.name; }) and in the predicte of arr2.every, use return arr3.indexOf(val) >= 0;. – The Paramagnetic Croissant Commented Oct 28, 2014 at 22:38
  • Oh, you were faster, same solution, upvote – sjkm Commented Oct 28, 2014 at 22:41
Add a ment  | 

1 Answer 1

Reset to default 8
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);
发布评论

评论列表(0)

  1. 暂无评论