2009-11-29 5 views
1

Note: Aucun jQuery
Comment pourrais-je faire quelque chose comme ceci:Javascript: Chaque tableau

var array = new Array(); 
array[name] = "Tom"; 
array[age] = 15; 
foreach(array as key=>value){ 
    alert(key + " = " + value); 
} 
+4

Vous devez utiliser un tableau que lorsque vos clés sont des numéros séquentiels * *, utilisez un objet comme 'var obj = {};' ou 'var obj = { 'name': 'Tom', 'age': 15}; ' – CMS

Répondre

4

Tout d'abord, vous devez appeler obj ou person au lieu de array; un tableau est une séquence d'éléments similaires, pas un seul objet.

Vous pouvez le faire comme ceci:

var person = new Object(); 
person['name'] = "Tom"; 
person['age'] = 15; 
for (var key in person) { 
    if(!person.hasOwnProperty(key)) continue;  //Skip base props like toString 

    alert(key + " = " + person[key]); 
} 

Vous pouvez également initialiser l'objet en utilisant les propriétés, comme ceci:

person.name = "Tom"; 
person.age = 15; 

Vous pouvez également utiliser JavaScript object literal syntax:

var person = { name: "Tom", age: 15 }; 
+0

Est-ce que cela fonctionne dans tous les navigateurs? J'ai eu des problèmes avec IE se plaindre du code de type '(var dans le tableau) {..}' mais ça fait un moment que je n'ai pas utilisé $ .each de jQuery pour ma boucle donc je ne sais pas si c'est encore applicable. Juste curieux :) – Bartek

+4

Tout d'abord, il n'y a pas besoin d'utiliser un tableau comme un objet est ce qui est nécessaire (quelle que soit la question pourrait dire). Deuxièmement, ce n'est pas la syntaxe JSON, c'est la syntaxe littérale de l'objet JavaScript. Ils ne sont pas identiques, et l'exemple que vous donnez n'est pas valide JSON. – NickFitz

+0

@Nickfitz: J'ai répondu à la question est posée. Vous avez raison de dire que ce n'est pas un tableau et qu'il ne devrait pas s'appeler un tableau, c'est pourquoi je l'ai dit en bas. – SLaks

3

Utilisez un objet javascript

var object = {}; 
object.name = "Tom"; 
object.age = 15; 
for (var i in object) { 
    console.log(i+' = '+ object[i]); 
} 
+0

absolument - Les tableaux JavaScript ne sont PAS associatifs - http://andrewdupont.net/2006/05/18/javascript-associative-arrays-considered-harmful/ –

1

D'abord, vous ne voulez pas un tableau, vous voulez un objet. L'idée de PHP de ce qui constitue un tableau est franchement un peu bizarre.

var stuff = { 
    name: "Tom", 
    age: 15 
}; 

/* Note: you could also have done 
var stuff = {}; 
stuff.name = "Tom"; 
stuff.age = 15; 

// or 

var stuff = {}; 
stuff["name"] = "Tom"; 
stuff["age"] = 15; 

*/ 

for (var key in stuff) { 
    alert(key + " = " + stuff[key]; 
} 
+0

L'idée de JavaScript est un peu bizarre, aussi, comme il autorise des propriétés semblables à des objets en plus des éléments numérotés. Bien sûr, vous pouvez accrocher des propriétés à partir de n'importe quoi dans JavaScript, y compris les fonctions. – Nosredna

0
key=0;while(key<array.length) { 
    alert(key + " = " + array.item(key)); 
    key++; 
}