如何在数组中通过属性查找对象

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (97)

鉴于我有一个“目的”对象的数组:

//array of purpose objects:
var purposeObjects = [
    {purpose: "daily"},
    {purpose: "weekly"},
    {purpose: "monthly"}
];

现在我想有一个方法,如果找到匹配的用途名称,返回一个特定的对象。

这不工作:

function findPurpose(purposeName){
    return $.grep(purposeObjects, function(){
      return this.purpose == purposeName;
    });
};

findPurpose("daily");

但它实际上返回一个空数组:

[]

我正在使用JQuery 1.5.2。我也尝试过$ .each(),但没有成功。显然,大多数JQuery方法都是为DOM元素(比如filter()

提问于
用户回答回答于

你应该在grep函数中传递对项目的引用:

function findPurpose(purposeName){
    return $.grep(purposeObjects, function(item){
      return item.purpose == purposeName;
    });
};
用户回答回答于

最快的方法(即使没有jQuery也能工作):

var findPurpose = function(purposeName) {
    for (var i = 0, len = purposeObjects.length; i < len; i++) {
        if (purposeObjects[i].purpose === purposeName)
            return purposeObjects[i]; // Return as soon as the object is found
    }
    return null; // The object was not found
}

扫码关注云+社区

领取腾讯云代金券