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

jckbn6z7  于 2021-09-29  发布在  Java
关注(0)|答案(5)|浏览(342)

我知道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?
w41d8nur

w41d8nur1#

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数组并向其传递任何数字属性。
但这可能不是你需要的!可能您只需要一个javascript对象,它与其他语言中的关联数组、字典或Map基本相同:它将字符串Map到值。这很容易做到:

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

但重要的是要理解,这与您所做的略有不同。 myObj instanceof Array 会回来的 false ,因为 myObj 他不是我的祖先 Array 在原型链中。

ymzxtsji

ymzxtsji2#

您可以使用Map:

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

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

gv8xihay3#

在这种情况下,您希望使用对象

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

这个答案链接到一个更深入的解释:如何在javascript中执行关联数组/哈希

qcuzuvrc

qcuzuvrc4#

您正在创建一个数组,它实际上是一个对象:

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

arr['a'] = 5;

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

您可以将字段和函数添加到 arr . 但它不会将它们“插入”到数组中(如 arr.push(...) ).
可以使用 [] 语法。

6mw9ycah

6mw9ycah5#

通过这种方式,您可以做您想做的事情:

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

相关问题