2013-08-30 61 views
1

我有一个数组,其中插入一个值的负载及其对应的键。它们插入正确,因为我可以在阵列中看到它们,当我执行console.log时。在关联数组中使用关键字检索值

问题是,我似乎无法使用各自的键从数组中检索值。

这是我的代码。

var personArray = []; 

personArray.push({ 
    key: person.id, 
    value:person 
}); 

var personID = person.id; 

console.log(personArray.personID); 

我也试过console.log(personArray[personID];但是这也不起作用。

我在控制台中得到的值是undefined

回答

4

你在做什么是你把字典推入数组。如果person.id是唯一的,那么你可以这样做:

var personDict = {} 
personDict[person.id] = person 

然后personDict[personID]会工作。如果你想保持你的结构,那么你必须在阵列内进行搜索:

var personArray = []; 

personArray.push({ 
    key: person.id, 
    value:person 
}); 

var personID = person.id; 

var search = function(id) { 
    var l = personArray.length; 
    for (var i = 0; i < l; i++) { 
     var p = personArray[i]; 
     if (p.key === id) { 
      return p.value; 
     } 
    } 
    return null; 
}; 
search(personID); 
+0

谢谢。 JavaScript新手仍然苦于语法 – StuStirling

0

您可以使用字典格式由@freakish, 的建议或者使用过滤功能来查找所需的对象。

例如:

var personArray = []; 
var person = {id: 'aki', value:'Akhil'} 
personArray.push({ 
    key: person.id, 
    value:person 
}); 
personArray.filter(function(item){ 
    return item.key == 'aki' 
});