我有一个数组,我在其中插入一组值以及相应的键。它们插入正常,因为当我执行console.log
时,我可以在数组中看到它们。
问题是,我似乎无法使用各自的密钥从数组中检索值。
这是我的代码。
var personArray = [];
personArray.push({
key: person.id,
value:person
});
var personID = person.id;
console.log(personArray.personID);
我也尝试了console.log(personArray[personID];
,但这也不起作用。
我在控制台中获得的值是undefined
。
答案 0 :(得分: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);
答案 1 :(得分: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'
});