任何人都可以解释为什么第二个警报会显示0?
var pollData = new Array();
pollData['pollType'] = 2;
alert(pollData['pollType']); // This prints 2
alert(pollData.length); // This prints 0 ??
答案 0 :(得分:8)
只有在添加数字索引时才会更改数组的长度。例如,
pollData["randomString"] = 23;
对长度没有影响,但是
var pollData = [];
pollData["45"] = "Hello";
pollData.length; // 46
将长度更改为46.请注意,如果键是数字或字符串,则无关紧要,只要它是数字整数即可。
此外,您不应该以这种方式使用数组。考虑更多的副作用,因为数组也是对象,而在JavaScript中,任何对象都可以将任意键作为字符串保存。
答案 1 :(得分:2)
因为你还没有把任何东西放到数组中。您只是在数组对象上分配了动态创建的pollType
属性。
如果使用数字索引,则数组会自动处理长度。例如:
var arr = [ ]; // same as new Array()
arr[2] = 'Banana!';
alert(arr.length); // prints 3 (indexes 0 through 2 were created)
答案 2 :(得分:0)
length
属性仅考虑那些名称为索引的数组成员(如'1'
,'2'
,'3'
,...)。
答案 3 :(得分:0)
JavaScript中的数组只有数字索引。
使用一个对象,它基本上就是你在上面做的,在该数组对象上设置属性。
答案 4 :(得分:0)
array.length返回数组中存储的值。第一个警报是返回“pollType”位置的值。
我在javascript数组需要帮助时总是使用的参考指南是此页面http://www.hunlock.com/blogs/Mastering_Javascript_Arrays
我还会在Javascript不支持关联数组的标题下阅读它所说的内容,因为你也可能遇到问题。
答案 5 :(得分:0)
var pollData = Array();
function test() {
pollData[0] = 2
alert(pollData[0]);
alert(pollData.length);
}
// [x]是数组位置;因此['polltype']导致问题