如何在拼接后正确列出数组中的项目

时间:2011-06-02 10:51:58

标签: javascript arrays for-loop

我有一些示例代码:

var array = [];
array[0] = {id:0};
array[1] = {id:1};
array[2] = {id:2};

现在数组看起来像

[Object{id=0}, Object{id=1}, Object{id=2}] 

我使用splice:

array.splice(0,1);

我们有:

[Object{id=1}, Object{id=2}]

当我尝试forfor ... in时,长度将只有2,我无法以正常方式迭代它。循环的结果是:

undefined
Object{id:1}  

在第一种情况下(当我们使用for时)我明白为什么它不起作用,但for ... in应该返回索引1和2而不是0和1 ......

任何人都可以向我解释我做错了什么?

1 个答案:

答案 0 :(得分:3)

你尝试了什么?如果我发出

var array = [];
array[0] = {id:0};
array[1] = {id:1};
array[2] = {id:2};
array.splice(0,1);
for (var i = 0, len = array.length; i < len; i++)
    console.log(i + ":", array[i]);

引擎正确输出

0: Object { id=1 }
1: Object { id=2 }

(但数组索引会更改为01,这可能会让您感到困惑;请记住Array.splice默认情况下从元素0开始删除并转移所有内容剩下的元素向下)。

更新除了您始终可以使用id获取单个对象的array[i].id属性之外,您可以删除数组元素而无需使用其他元素移动delete运算符。用{/ 1>替换array.splice(0,1)

delete array[0];

输出显示

0: undefined
1: Object { id=1 }
2: Object { id=2 }