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

How to retrieve an object from a long list having a given (key,value) pair?

本文关键字:列表 对象 检索      更新时间:2023-09-26

我们有一长串这样的对象:

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

是否有更标准的方法来检索基于(键,值)对列表中的对象?

听起来像是最明智的方法,除了将for..in与数组一起使用不是一个好主意。最好使用常规的for循环或js.forEach(...)

:

for (var i = 0; i < js.length; i += 1) {
    o = js[i];
    out[o[indexColumn]]=o;
}

或this(要求ES5):

js.forEach(function(el) {
    out[el[indexColumn]] = el;
});

jQuery版本(不需要ES5):

$.each(js, function() {
    out[this[indexColumn]] = this;
});