Hoe maak je een associatieve array in JavaScript letterlijke notatie

Ik begrijp dat JavaScript geen associatieve arraysbevat, alleen objecten.

Ik kan echter een arraymet tekenreekssleutels maken met behulp van haakjesnotatieals volgt:

var myArray = [];
myArray['a'] = 200;
myArray['b'] = 300;
console.log(myArray); // Prints [a: 200, b: 300]

Dus ik wil precies hetzelfde doen zonder haakjesnotatiete gebruiken:

var myNewArray = [a: 200, b: 300]; // I am getting error - Unexpected token:

Dit werkt ook niet:

var myNewArray = ['a': 200, 'b': 300]; // Same error. Why can I not create?

Antwoord 1, autoriteit 100%

JavaScript heeft geen associatieve arrays, alleen objecten. Zelfs JavaScript-arrays zijn in feite gewoon objecten, alleen met het bijzondere dat de eigenschapsnamen getallen zijn (0,1,…).

Kijk dus eerst naar je code:

var myArray = []; // Creating a new array object
myArray['a'] = 200; // Setting the attribute a to 200
myArray['b'] = 300; // Setting the attribute b to 300

Het is belangrijk om te begrijpen dat myArray['a'] = 200;identiekis aan myArray.a = 200;!

Dus om te beginnen met wat je wilt:
U kunt geen JavaScript-array maken en er geen getalkenmerken aan doorgeven in één instructie.

Maar dit is waarschijnlijk niet wat je nodig hebt! Waarschijnlijk heb je alleen een JavaScript-object nodig, wat in principe hetzelfde is als een associatieve array, woordenboek of kaart in andere talen: het wijst strings toe aan waarden. En dat kan eenvoudig:

var myObj = {a: 200, b: 300};

Maar het is belangrijk om te begrijpen dat dit enigszins afwijkt van wat u heeft gedaan. myObj instanceof Arrayretourneert false, omdat myObjgeen voorouder is van Arrayin de prototypeketen.


Antwoord 2, autoriteit 43%

U kunt kaart gebruiken:

var arr = new Map([
   ['key1', 'User'],
   ['key2', 'Guest'],
   ['key3', 'Admin'],
]);
var res = arr.get('key2');
console.log(res); // The value is 'Guest'

Antwoord 3, autoriteit 6%

U wilt in dit geval een object gebruiken

var myObject = {'a' : 200, 'b' : 300 };

Dit antwoord linkt naar een meer diepgaande uitleg: Hoe associatieve array/hashing in JavaScript te doen


Antwoord 4, autoriteit 3%

Nou, je maakt een array, die in feite een object is:

var arr = [];
arr.map;
// function(..)
arr['map'];
// function(..)
arr['a'] = 5;
console.log(arr instanceof Object); // true

Je kunt velden en functies toevoegen aan arr. Het “plaatst” ze echter niet in de array (zoals arr.push(...)).

U kunt verwijzen naar een objectveld met de []syntaxis.


Antwoord 5

U kunt een associatieve array maken met een vergelijkbare structuur op een object.
Syntaxis hieronder:

var arr = new Array(); // OR var  arr  = [];
arr['name'] = 'david'
arr['age'] = 23;
console.log(arr['name']);

Antwoord 6

U kunt doen wat u op deze manier wilde doen:

myNewArray = new Array ({'a' : 200, 'b' : 300})

Other episodes