我的数据数组
data : [
{
"name": "Autauga, AL",
"value": 5.6
},
{
"name": "Baldwin, AL",
"value": 5.3
},...
]
如果我只有名称“Autauga, AL”,如何检索数组对象的索引? 我知道暴力循环。有更好的办法吗?
最佳答案
在 ECMAScript 5.1+ 中,您可以使用 Array#filter
方法获取实际对象:
data.filter(function(item){return item.name == 'Autauga, AL'})[0]
不过,这并不能让你获得索引。你可以这样做:
data.map(function(item,index){
return [item, index]
}).filter(function(a){
return a[0].name == 'Autauga, AL'
})[0][1]
这些方法最终仍然在幕后使用循环,但我想它们看起来更酷..
为了高效访问,您可以为目标字段建立索引:
var dataIndexByName = {}, i, len;
for (i=0, len=data.length; i<len; ++i) {
dataIndexByName[data[i].name] = i
}
之后您只需查找dataIndexByName['Autauga, AL']
。这也具有在较旧的实现中工作的优点。不过,如果给定的名称可能在原始数组中出现多次,情况就会变得更加复杂。
关于javascript:从字典键获取对象的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24072334/