访问关联数组

时间:2014-07-14 20:21:50

标签: javascript associative-array

我试图创建一个允许我们输入人名和年龄的功能。然后它将保存到一个数组中。

var personnes=[];

function ajoutePersonne(n,a){
    personnes["Nom"]=personnes.push(n);
    personnes["Age"]=personnes.push(a);
    personnes["Enfant"]=""; 
}
ajoutePersonne("Julie",100);
ajoutePersonne("Sarah",83);
ajoutePersonne("Jennifer",82);
ajoutePersonne("Olivia",79);
ajoutePersonne("Marge",55);
ajoutePersonne("Mathilde",48);
ajoutePersonne("Joanne",45);
ajoutePersonne("Isabelle",47);
ajoutePersonne("Celine",23);
ajoutePersonne("Caroline",29);
ajoutePersonne("Wendy",24);
ajoutePersonne("Kaliste",26);
ajoutePersonne("Karine",22);
ajoutePersonne("Sophie",28);
ajoutePersonne("Orianne",25);
ajoutePersonne("Alice",21);

print(personnes[1].Nom);

为什么我试图在“Nom”类别下访问阵列中的2秒人物时,什么都没有显示出来。

3 个答案:

答案 0 :(得分:2)

您需要将整个对象放在数组中,而不是单独推送名称和年龄:

var personnes=[];

function ajoutePersonne(n,a){
    personnes.push({ "Nom" : n, "Age" : a, "Enfant" : ""});
}

答案 1 :(得分:0)

personnes是一个数组,因此在javascript中它只能有整数索引。

做我认为你想做的事情:

function ajoutePersonne(n,a){
    var person = {nom: n, age: a, enfant: ""};
    personnes.push(person);
}

哪里"人"是一个使用JSON的javascript对象。

答案 2 :(得分:0)

数组仅用于存储数字索引,您可以创建Nom之类的成员,但这些不会像普通数字索引那样反应。*

使用对象,或将对象推入数组。

var personnes=[];
personnes.push({ "Nom" : "Julie", "Age" : 100 });
personnes[0].Nom // -> Julie

var personnes={};
personnes["Julie"] = 100;
// equal to:
personnes.Julie = 100;

var personnes={};
personnes["Julie"] = {"age":100 /*,"more attributes":"here"*/}

但是,最后两个符号假设名称是唯一的!

*您可以执行以下操作:

var ar = [];
ar.attr = 5;
ar.attr; // -> 5
ar.length; // -> 0, since attr is not enumerable
// also all other regular array operation won't affect attr