Ada*_*ite 6 javascript arrays search jquery object
我的JavaScript知识存在差距.我想搜索特定值的对象值数组并返回它.
在我编写JavaScript的那一年里,我一直在实现它:
var itemClicked = (function(){
var retval;
//Note self.inventory.itemsArray is an array of JS objects
$(self.inventory.itemsArray).each(function(i){
if(parseInt(this.id) === parseInt(idOfItem)){
retval = this;
return false;
}
});
return retval;
})();
Run Code Online (Sandbox Code Playgroud)
它有效,但我确信任何东西都有更优雅的方式.请告诉我!
编辑 - 解决方案
感谢@gdoron,他的回答如下.
var myVar = $(self.owner.itemsArray).filter(function(){
return parseInt(this.id) == parseInt(recItemID);
}).get(0);
Run Code Online (Sandbox Code Playgroud)
注意:.get(0)最后添加了因为myVar被包装为jQuery对象.
gdo*_*ica 14
本机jQuery函数是filter:
$(data).filter(function(){
return this.id == "foo";
});
Run Code Online (Sandbox Code Playgroud)
它比你拥有的代码短,更重要的是更具可读性.
关于效率,它将迭代集合中的所有元素以找到尽可能多的匹配,但我几乎不相信它将成为您应用程序的瓶颈,不要专注于微观优化.
我建议你阅读Eric Lipper博客,了解哪个更快.
您也可以grep按照@Mattias Buelens的建议使用:
$.grep(data, function(ele){
retun ele.id == "foo";
});
Run Code Online (Sandbox Code Playgroud)