你有很多像这样的对象:
var myLongList = [
{id="1", desc:"ahahah"},
{id="2", desc:"ihihih"},
{id="3", desc:"ohohoh"},
...
{id="N", desc:"olala"}
]
我需要使用id="14575"
检索对象。由于我的列表很长,并且我必须进行大量此类检索,因此我不希望在列表中循环以获取我的对象。
到目前为止,我使用函数从列中索引我的数组:
function index(js, indexColumn){
var out={};
var o;
for (var key in js) {
o = js[key];
out[o[indexColumn]]=o;
}
return out;
}
对var myLongListIndexed = index(myLongList, "id");
的调用构建索引列表,myLongListIndexed [" 14575"]返回我心爱的对象。
是否有更标准的方法可以根据(键,值)对从列表中检索对象?
答案 0 :(得分:1)
听起来几乎是最合理的方法,除了使用for..in
数组不是一个好主意。最好使用常规for
循环或js.forEach(...)
。
像这样:
for (var i = 0; i < js.length; i += 1) {
o = js[i];
out[o[indexColumn]]=o;
}
或者这(需要ES5):
js.forEach(function(el) {
out[el[indexColumn]] = el;
});
jQuery版本(不需要ES5):
$.each(js, function() {
out[this[indexColumn]] = this;
});