在JavaScript中,您可以通过各种方式将变量或对象放入数组中:
array.push(item)
array[2] = item;
array[somevariable] = item
以上例子的后者让我困扰
例如说我有以下变量var somevariable = 'someString';
如果您愿意,我可以将其作为索引(或键)放入array
。
此行为主要见于Map
界面,表明JavaScript中的数组不属于List
类型。
另一个注意事项是JavaScript中的Array object
也有一个pop
方法,可以在Queue
界面中看到。
所以我的问题是Array
中的JavaScript
数据类型是什么?
答案 0 :(得分:4)
数组只是具有一些特殊方法和行为的对象。
作为对象,您可以在其中存储属性。键必须是字符串(或ES6中的符号),值可以是任何值。
但是,数组方法只考虑名称为数组索引的属性。
数组对象对某类属性进行特殊处理 名。属性名称 P (以String值的形式)是 数组索引当且仅当ToString(ToUint32(P))等于 P 和ToUint32( P )不等于2 32 -1。
建议仅在数组中使用数组索引。如果需要其他属性,则无法使用数组方法。但是最好更好地使用普通物体。或者也许是ES6地图,其键和值可以是任何东西。
规范没有说明应该如何实现数组。大多数实现在只有数组索引的情况下使用某种列表,但如果添加其他属性则切换到哈希。
答案 1 :(得分:1)
数组既是对象又是数组。这就是为什么你可以添加命名属性的方式,就像你可以将命名属性添加到对象或函数一样。
您可以告诉数组是一个对象:
var a = [];
console.log(typeof a);
将打印“对象”
如果您需要测试变量是否实际上是一个数组,您可以使用:
Array.isArray(a);