我了解associative arrays
中没有javascript
,只有objects
。
但是,我可以使用array
创建一个包含字符串键的bracket notation
,如下所示:
var myArray = [];
myArray['a'] = 200;
myArray['b'] = 300;
console.log(myArray); //prints [a: 200, b: 300]
所以,我想在不使用bracket notation
var myNewArray = [a: 200, b: 300]; //getting error - Unexpected token:
这不起作用
var myNewArray = ['a': 200, 'b': 300]; //same error, why can I not create?
答案 0 :(得分:31)
JavaScript没有关联数组,只有对象。甚至JavaScript数组基本上也只是对象,只是特殊的东西,属性名称是数字(0,1,...)。
首先看看你的代码:
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
了解myArray['a'] = 200;
相同至myArray.a = 200;
非常重要!
所以从你想要的开始: 您无法在一个语句中创建javascript数组并且不向其传递任何数字属性。
但这可能不是你所需要的!可能你只需要一个JS对象,它与其他语言中的关联数组,字典或映射基本相同:它将字符串映射到值。这可以很容易地完成:
var myObj = {a: 200, b: 300};
但重要的是要明白这与你所做的略有不同。 myObj instanceof Array
将返回false
,因为myObj
不是原型链中Array
的祖先。
答案 1 :(得分:8)
您可以使用地图:
var arr = new Map([
['key1', 'User'],
['key2', 'Guest'],
['key3', 'Admin'],
]);
var res = arr.get('key2');
console.log(res); // The value is 'Guest'
答案 2 :(得分:2)
嗯,你正在创建一个数组,实际上是一个对象。
var arr = [];
arr.map;
// function(..)
arr['map'];
// function(..)
arr['a'] = 5;
console.log(arr instanceof Object); // true
您可以向arr
添加字段和功能。它没有"插入"尽管如此(例如arr.push(...)
)
您可以使用[]
语法
答案 3 :(得分:1)
您希望在这种情况下使用对象
var myObject = {'a' : 200, 'b' : 300 };
此答案链接到更深入的解释:How to do associative array/hashing in JavaScript(http://blog.xkoder.com/2008/07/10/javascript-associative-arrays-demystified/)
答案 4 :(得分:1)
数组和对象是不同的东西。
对于某个对象,您可以执行以下操作:
var obj = { "property1": "value1" };
obj.property2 = "value2";
对于数组,您必须这样做:
var arr = [];
arr[0] = "value";
答案 5 :(得分:0)
您可以通过这种方式做您想做的事情:
myNewArray =新数组({'a':200,'b':300})
答案 6 :(得分:-1)
您可以使用与对象类似的结构创建关联数组。 语法如下:
var arr = new Array(); // OR var arr = [];
arr['name'] = 'david'
arr['age'] = 23;
console.log(arr['name']);