如何在javascript中将关联项目推送到数组?

56 javascript

请更正此代码:

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

的jsfiddle

Vis*_*ioN 109

在JavaScript中创建类似关联数组的东西,您必须使用对象.

var arr = {}; // {} will create an object
var name = "name";
var val = 2;
arr[name] = val;
console.log(arr);?
Run Code Online (Sandbox Code Playgroud)

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

  • 你应该将`arr`重命名为`obj`.因为它是一个对象,而不是一个数组. (9认同)
  • 您知道,有时我们过于专注于复杂的解决方案而忘记了简单的解决方案。arr[名称] = val; 5年后谢谢兄弟。结合 for 循环,您可以一整天一个接一个地推送变量 (2认同)

ant*_*rat 22

JavaScript没有关联数组.您需要使用对象:

var obj = {};
var name = "name";
var val = 2;
obj[name] = val;
console.log(obj);?
Run Code Online (Sandbox Code Playgroud)

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

console.log(obj.name);?
console.log(obj[name]);?
console.log(obj["name"]);?
Run Code Online (Sandbox Code Playgroud)


Ale*_*ati 7

Javascript 关联数组.这是一个工作片段.

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

它们简称为对象.

  • 这不是一个数组.非数字键的存在使其成为对象文字.亲眼看看:`console.log(typeof myArray);`.此外,`length`属性不会将这些非数字键计为数组的一部分:`console.log(myArray.length);`返回`0`.添加`myArray [0] ='看';`,然后再次运行,返回`1`. (3认同)
  • 你们对命名有争议吗?它是一个对象吗?数组?好吧,https://www.w3schools.com/jsref/jsref_obj_array.asp 称它为数组对象。:)) (2认同)