如何从具有给定(键,值)对的长列表中检索对象?

时间:2014-08-26 12:58:32

标签: javascript list indexing

你有很多像这样的对象:

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"]返回我心爱的对象。

是否有更标准的方法可以根据(键,值)对从列表中检索对象?

1 个答案:

答案 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;
});