如何使用Javascript文字表示法创建关联数组

时间:2016-05-29 23:41:32

标签: javascript arrays associative-array

我了解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?

7 个答案:

答案 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 JavaScripthttp://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']);