J'essaie de créer un tableau associatif, de créer un tableau vide, puis d'ajouter une paire (indexName
-> valeur):
var arrayName = new Array;
arrayName["indexName"] = value;
// i know i can also do the last line like this:
arrayName.indexName = value;
Lorsque j'attribue la valeur à la indexName
, je veux que indexName
soit dynamique et la valeur d'une variable. Alors j'ai essayé ceci:
arrayName[eval("nume")] = value;
Où:
var var1 = "index";
var var2 = "Name";
var nume = '"' + var1 + var2 + '"';
mais: alert(arrayName["indexName"]);
ne renvoie pas "valeur" ... il dit "indéfini"
Y a-t-il quelque chose qui me manque? (Je ne connais pas eval()
); si j’essaie d’être une impasse, existe-t-il un autre moyen de dynamiser le nom d’index de la valeur du tableau associatif?
Au début, je ne pense pas que vous ayez besoin d’un vrai objet tableau pour faire ce dont vous avez besoin, vous pouvez utiliser un objet simple.
Vous pouvez simplement utiliser la notation entre crochets pour accéder à une propriété, en utilisant la valeur d'une variable:
var obj = {};
var nume = var1 + var2;
obj[nume] = value;
Les tableaux sont simplement des objets, le concept de "tableau associatif" peut être obtenu en utilisant un objet simple, les objets sont des collections de propriétés qui contiennent des valeurs.
Les véritables tableaux sont utiles lorsque vous devez stocker des index numériques. Ils mettent automatiquement à jour leur propriété length
lorsque vous affectez un index ou vous Push
une valeur.
utiliser arrayName[var1+var2]
Notez que arrayName.var
est identique à arrayName["var"]
- ce n'est que du sucre syntaxique. La seconde forme est principalement utilisée pour traiter le type de problèmes auxquels vous êtes confrontés - clés d’objet dynamiques et clés non alphanumériques (pensez à arrayName[".eval()"]
; c’est une clé d’objet parfaitement légale qui n’a rien à voir avec la fonction javascript eval()
)
Vous utiliseriez des objets pour faire cela:
var hash = {}
hash["foo"] = "foo";
hash.bar = "bar";
// This is the dynamic approach: Your key is a string:
baz = "baz"
hash[baz] = "hello";
Pour itérer, utilisez simplement une boucle for
ou $.each()
dans jQuery.
J'ai fait quelque chose comme aimer suivre;
let parentArray = [];
let childArray = [1, 2, 3];
childArray.name = 'my-array-1';
parentArray.Push(childArray);
Pour accéder à cela par nom dans ES6;
parentArray.filter(x => x.name == 'my-array-1');
En effet, il n’était pas nécessaire d’obtenir un objet tableau, un objet simple faisait le travail; de plus, un tableau a introduit la nécessité d’utiliser des guillemets entre les crochets obj["var1 + var2"]
pour accéder à la valeur de la propriété de l’objet et non à la valeur associée à un index (je pense); les guillemets ont transformé "var1 + var2"
en une chaîne. L'utilisation d'un objet simple a éliminé le besoin de guillemets, je peux donc utiliser obj[var1 + var2]
, ce qui a fonctionné :)
Merci tout le monde !
Recherchez-vous variableName = 'bla'+'foo'; arrayRef[variableName] = 'something';
?
Et même ainsi, vous devriez utiliser un littéral d'objet à la place. x = {}; x[variablename] = 'blah';
Vous voulez un objet simple avec la même notation entre crochets ici, comme ceci:
var arrayName = {};
arrayName["indexName"] = value;