鉴于我有一系列“目的”对象:
//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()
.
关于如何实现这一目标有什么想法吗?
不需要 jQuery。
JavaScript 数组有一个find https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/find方法,这样你就可以用一行实现这一点:
array.find((o) => { return o[propertyName] === propertyValue })
Example
const purposeObjects = [
{purpose: "daily"},
{purpose: "weekly"},
{purpose: "monthly"}
];
purposeObjects.find((o) => { return o["purpose"] === "weekly" })
// output -> {purpose: "weekly"}
如果你需要IE兼容,导入这个polyfill https://www.npmjs.com/package/ie-array-find-polyfill在你的代码中。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)