Jquery如何在数组中按属性查找Object
鉴于我有一系列“目的”对象:
//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()
)而设计的。
关于如何实现这一点的任何想法?
没有找到相关结果
已邀请:
11 个回复
薄响
从ES6开始,JavaScript Array原型有一个find方法,它返回数组中第一个满足提供的测试函数的元素的值。否则返回undefined。 ES5
注意 jQuery $ .grep(或其他过滤函数)不是最佳解决方案。 即使在循环期间已经找到搜索到的对象,
函数也将循环遍历数组的所有元素。从jQuery grep文档: $ .grep()方法根据需要从数组中删除项目 所有剩余的项目都通过了提供的测试测试是一个功能 传递数组项和数组中项的索引。 仅当测试返回true时,该项才会位于结果数组中。
娜拐赐巫潭
例
卧沫
你只需这样称呼它:
芦歉竭皑
,但必须使用对元素的引用。这有效:
收益:
惜堡沁戚
等于:
这是一个小提琴:http://jsfiddle.net/spencerw/oqbgc21x/ 要返回多个(如果阵列中有更多),可以使用
扑北爱
讹巳漓把备
款去芳尾脊
使用:
该函数不会对数组中的每个元素执行(对于大型数组而言它很有用)
鞘垒飘
对于当前问题的解决方案。注入UtilService并调用,
或者更先进
寇剩
将回调扩展到函数并不困难。但是这与IE不兼容(部分与Edge兼容)。有关完整列表,请查看浏览器兼容性
荆怖赡