如何使用 JavaScript 文字符号创建关联数组

我知道在 JavaScript 中没有 联合数组联合数组,只有 物品

然而,我可以使用如下 括号符号创建一个带字符串键的 数组:

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

因此,我想在不使用 括号符号的情况下做完全相同的事情:

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

这也行不通:

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

You want to use an object in this case

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

This answer links to a more in-depth explanation: How to do associative array/hashing in JavaScript

Well, you are creating an array, which is in fact an object:

var arr = [];
arr.map;
// function(..)
arr['map'];
// function(..)


arr['a'] = 5;


console.log(arr instanceof Object); // true

You can add fields and functions to arr. It does not "insert" them into the array though (like arr.push(...)).

You can refer to an object fields with the [] syntax.

JavaScript has no associative arrays, just objects. Even JavaScript arrays are basically just objects, just with the special thing that the property names are numbers (0,1,...).

So look at your code first:

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

It's important to understand that myArray['a'] = 200; is identical to myArray.a = 200;!

So to start with what you want: You can't create a JavaScript array and pass no number attributes to it in one statement.

But this is probably not what you need! Probably you just need a JavaScript object, what is basically the same as an associative array, dictionary, or map in other languages: It maps strings to values. And that can be done easily:

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

But it's important to understand that this differs slightly from what you did. myObj instanceof Array will return false, because myObj is not an ancestor from Array in the prototype chain.

You can use Map:

var arr = new Map([
['key1', 'User'],
['key2', 'Guest'],
['key3', 'Admin'],
]);


var res = arr.get('key2');
console.log(res); // The value is 'Guest'

You can do what you wanted to do this way:

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

Associate array is an array indexed with name similar to an object instead of numbers like in 规则数组. You can create an associative array in the following way:

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


console.log(arr['name']);

I achieved this by using objects. Your create an object, and loop through using for in loop. each x will be the index and holder[x] will be the value. an example is below.

var test = {'hello':'world','hello2':'world2'}
for(let x in holder)
{
let inxed = x;
let value = holder[x]
console.log('index ' + x + ' has value of ' +    value)
}