Javascript array.length为0但是数组填充了40个项目

时间:2013-11-11 21:21:22

标签: javascript arrays

我的一个javascript代码数组中存在一个大问题:

console.dir(particles[idx]);

返回

Array[0]
0: particle
...
39: particle
length: 40
__proto__: Array[0]
 (index):191

但是

console.log("length:"+particles[idx].length);

返回

length:0

知道长度值为0的原因吗? 在console.dir中,长度为40。

我认为它是在数组创建中但却找不到原因。

这是填充此数组的代码(在这种情况下,idx = 1):

particles[idx] = [];
(function emitter(cnt) {
    setTimeout(function(){
    particles[idx].push(new particle());
        if (--cnt) emitter(cnt);
        }, 50);
    })(particles_count);

感谢您的帮助。

[编辑]

我有这个代码正确返回数组长度:

        (function emitter(i) {
            setTimeout(function () {
            particles.push(new particle());
                if (--i) emitter(i);
            }, 50);
        })(particle_count);

唯一的区别在于粒子数组中没有使用索引。

1 个答案:

答案 0 :(得分:1)

particles是一个包含40个项目的数组,但particles[idx].length返回40个项目长度之一的长度。像:

var particles = ['','','',''];

particles.length为4,particles[0].length为0,因为particles[0] = ''