61

如何更正以下代码?

var arr = [];
var name = "name";
var val = 2;
arr.push(val); //works , but not associative
arr[name] = val; //does not work
console.log(arr);

JSFiddle

4

5 回答 5

118

在 JavaScript 中创建类似关联数组的东西,您必须使用对象。​</p>

var obj = {}; // {} will create an object
var name = "name";
var val = 2;
obj[name] = val;
console.log(obj);

演示:http: //jsfiddle.net/bz8pK/1/

于 2012-05-11T11:07:18.187 回答
27

JavaScript 没有关联数组。您需要使用 Objects 代替:

var obj = {};
var name = "name";
var val = 2;
obj[name] = val;
console.log(obj);​

为了获得价值,您现在可以使用不同的方式:

console.log(obj.name);​
console.log(obj[name]);​
console.log(obj["name"]);​
于 2012-05-11T11:07:39.937 回答
7

JavaScript关联数组。

这是一个工作片段。

<script type="text/javascript">
  var myArray = [];
  myArray['thank'] = 'you';
  myArray['no'] = 'problem';
  console.log(myArray);
</script>

它们被简单地称为对象。

于 2015-08-02T11:28:29.243 回答
1

另一种创建 JavaScript 关联数组的方法

首先创建一个对象数组,

 var arr = {'name': []};

接下来,将值推送到对象。

  var val = 2;
  arr['name'].push(val);

从中读取:

var val = arr.name[0];
于 2019-06-18T01:15:41.147 回答
0

如果您来这个问题是为了寻找一种方法来推入关联数组的末尾,同时保留顺序,就像一个适当的堆栈一样,这个方法应该可以工作。尽管输出与原始问题不同,但仍然可以迭代。

// Order of entry altered
let obj = {}; //  will create an object
let name = "4 name";
let val = 4;
obj[val] = name;
name = "7 name";
val = 7;
obj[val] = name;
name = "2 name";
val = 2;
obj[val] = name;
console.log(obj);

// Order of entry maintained for future iteration
obj = []; //  will create an array
name = "4 name";
val = 4;
obj.push({[val]:name}); // will push the object to the array
name = "7 name";
val = 7;
obj.push({[val]:name});
name = "2 name";
val = 2;
obj.push({[val]:name});
console.log(obj);

于 2022-02-10T04:20:36.247 回答