2015-08-28 62 views

回答

2

我会将该结果集转换为索引对象,然后在索引对象上执行所有后续查找。这样你只需要遍历结果集一次。

以下是基于reduce方法的简单实施。

var results = [{key: "key1", value: "value1"}, {key: "key2", value: "value2"}]; 
 
var index = results.reduce(function(index, result) { 
 
    index[result.key] = result.value; 
 

 
    return index; 
 
}, {}); 
 

 
alert(index.key2);

正如评论所说,如果你不需要做多个查找窗口,但只需要提取一个值,使用常规的for循环会更快使用较少的内存。

var results = [{key: "key1", value: "value1"}, {key: "key2", value: "value2"}]; 
 

 
for (var i=0; i < results.length; i++) { 
 
    if (results[i].key === 'key2') { 
 
    alert(results[i].value); 
 
    
 
    break; 
 
    } 
 
}

+0

这是一个不错的主意,如果你想访问始终在更大的数据集值。如果您想在每个应用程序运行时只查看一次,简单的for-loop会更快。 – JacobMiki