簡體   English   中英

如何在 JavaScript 文字符號中創建關聯數組

[英]How to create an associative array in JavaScript literal notation

我知道 JavaScript 中沒有關聯數組,只有objects

但是我可以使用這樣的括號表示法創建一個帶有字符串鍵的數組

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?

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將返回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'

在這種情況下你想使用一個對象

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 中沒有關聯數組,只有objects

但是,我可以使用括號表示法創建一個帶有字符串鍵的數組,如下所示:

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?

我通過使用對象實現了這一點。 您創建一個對象,並通過使用 for in 循環進行循環。 每個 x 將是索引, holder[x] 將是值。 下面是一個例子。

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)
}

關聯數組是一個索引名稱類似於對象的數組,而不是常規數組中的數字 您可以通過以下方式創建關聯數組:

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

你可以用這種方式做你想做的事:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM