我的
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; })();
它有效,但我确信任何东西都有更优雅的方式.请告诉我!
编辑 – 解决方案
感谢@gdoron,他的回答如下.
var myVar = $(self.owner.itemsArray).filter(function(){ return parseInt(this.id) == parseInt(recItemID); }).get(0);
注意:最后添加了.get(0),因为myVar被包装为jQuery对象.
@H_403_16@解决方法
本机jQuery函数是
filter
:
$(data).filter(function(){ return this.id == "foo"; });
它比你拥有的代码短,更重要的是更具可读性.
关于效率,它将迭代集合中的所有元素以找到尽可能多的匹配,但我几乎不相信它将成为您应用程序的瓶颈,不要专注于微观优化.
我建议你阅读关于Which is faster的Eric Lipper博客.
您也可以按照@Mattias Buelens的建议使用grep
:
$.grep(data,function(ele){ retun ele.id == "foo"; });@H_403_16@ @H_403_16@