访问关联数组

Accessing a associative array

本文关键字:数组 关联 访问      更新时间:2023-09-26

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

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"下的数组中的第二个人时,什么都没有出现。

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

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

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

做我认为你想做的事:

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

其中"person"是使用JSON的javascript对象

数组仅用于存储数字索引,您可以创建像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