110 votes

La clé du dictionnaire javascript n'est pas stockée comme valeur mais comme nom de variable.

J'essaie de créer un objet dictionnaire comme ceci

var obj = { varName : varValue };

Ce que j'attends, c'est que si varName='foo' l'objet devrait être {'foo', 'some value' } mais ce que je vois, c'est {varName, 'some value'} la valeur de la variable n'est pas utilisée mais un nom de variable comme clé. Comment puis-je faire en sorte que la valeur de la variable soit utilisée comme clé ?

200voto

Engineer Points 19343

Essayez comme ça :

var obj = {};
obj[varName] = varValue;

Vous ne pouvez pas initialiser des objets avec des clés "dynamiques" dans l'ancien Javascript. var obj = { varName : varValue }; est équivalent à var obj = { "varName" : varValue }; . C'est ainsi que Javascript interprète.

Cependant, le nouvel ECMAScript prend en charge noms des propriétés calculées et vous pouvez le faire :

var obj = { [varName]: varValue };

54voto

Leon Adler Points 1138

À partir de l'ECMAScript 2015, dont la prise en charge par les navigateurs s'est améliorée au cours des dernières années, vous pouvez utiliser la notation de l'indice variable :

const obj = { [varName] : varValue };

C'est syntaxiquement la même chose que

var obj = {};
obj[varName] = varValue;

Vous pouvez également utiliser des expressions ou des symboles comme clé de propriété :

const contact = {
    company: companyName,
};
const companiesWithContacts = {
    [contact.company.toLowerCase()]: true
};

const myList = {
    [Symbol.iterator]: createIteratorForList
};
function createIteratorForList() { ... }

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X