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

2 回答 2

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);
于 2013-08-30T05:43:11.820 回答
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'
});
于 2013-08-30T05:46:36.210 回答