如何在 JavaScript 文字表示法中创建关联数组
How to create an associative array in JavaScript literal notation
我了解到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?
在这种情况下你想使用一个对象
var myObject = {'a' : 200, 'b' : 300 };
此答案链接到更深入的解释:How to do associative array/hashing in JavaScript
嗯,你正在创建一个数组,它实际上是一个对象:
var arr = [];
arr.map;
// function(..)
arr['map'];
// function(..)
arr['a'] = 5;
console.log(arr instanceof Object); // true
您可以向 arr
添加字段和函数。它不会将它们“插入”到数组中(如 arr.push(...)
)。
您可以使用 []
语法引用对象字段。
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 对象,这与其他语言中的关联数组、字典或映射基本相同:它将字符串映射到值。这很容易做到:
var myObj = {a: 200, b: 300};
但重要的是要了解这与您所做的略有不同。 myObj instanceof Array
将 return false
,因为 myObj
不是原型链中来自 Array
的祖先。
您可以使用地图:
var arr = new Map([
['key1', 'User'],
['key2', 'Guest'],
['key3', 'Admin'],
]);
var res = arr.get('key2');
console.log(res); // The value is 'Guest'
你可以通过这种方式做你想做的事情:
myNewArray = new Array ({'a' : 200, 'b' : 300})
关联数组是用 name 索引的数组,类似于 object 而不是 numbers就像在 常规数组 中一样。您可以通过以下方式创建关联数组:
var arr = new Array(); // OR var arr = [];
arr['name'] = 'david'
arr['age'] = 23;
console.log(arr['name']);
我了解到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?
在这种情况下你想使用一个对象
var myObject = {'a' : 200, 'b' : 300 };
此答案链接到更深入的解释:How to do associative array/hashing in JavaScript
嗯,你正在创建一个数组,它实际上是一个对象:
var arr = [];
arr.map;
// function(..)
arr['map'];
// function(..)
arr['a'] = 5;
console.log(arr instanceof Object); // true
您可以向 arr
添加字段和函数。它不会将它们“插入”到数组中(如 arr.push(...)
)。
您可以使用 []
语法引用对象字段。
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 对象,这与其他语言中的关联数组、字典或映射基本相同:它将字符串映射到值。这很容易做到:
var myObj = {a: 200, b: 300};
但重要的是要了解这与您所做的略有不同。 myObj instanceof Array
将 return false
,因为 myObj
不是原型链中来自 Array
的祖先。
您可以使用地图:
var arr = new Map([
['key1', 'User'],
['key2', 'Guest'],
['key3', 'Admin'],
]);
var res = arr.get('key2');
console.log(res); // The value is 'Guest'
你可以通过这种方式做你想做的事情:
myNewArray = new Array ({'a' : 200, 'b' : 300})
关联数组是用 name 索引的数组,类似于 object 而不是 numbers就像在 常规数组 中一样。您可以通过以下方式创建关联数组:
var arr = new Array(); // OR var arr = [];
arr['name'] = 'david'
arr['age'] = 23;
console.log(arr['name']);