【问题标题】:Checking if an array is a subset of another array (but checking against a property)检查一个数组是否是另一个数组的子集(但检查一个属性)
【发布时间】:2014-10-28 22:36:00
【问题描述】:

我知道这行得通(返回 true)

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

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

但是说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; });

如何确保每个函数都检查 name 属性?

【问题讨论】:

  • var arr3 = arr1.map(function(val) { return val.name; })arr2.every 的预测中,使用return arr3.indexOf(val) >= 0;
  • 哦,你更快,同样的解决方案,赞成

标签: javascript jquery arrays function object


【解决方案1】:
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);

【讨论】:

    猜你喜欢
    • 2010-09-24
    • 2012-05-20
    • 1970-01-01
    • 2016-12-13
    • 2021-07-10
    • 2020-03-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多