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 Array
retourneert false
, omdat myObj
geen voorouder is van Array
in 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})