【发布时间】:2012-10-28 23:35:50
【问题描述】:
我有一种情况,我必须从数组和 .splice 中删除一个 obj。发生的事情是数组没有正确重新编号,如下所示。
为了在删除数组的对象后删除数组中未定义的占位符,我执行了 [].concat()。这样做的问题是新数组没有正确编号。
以低开销正确重新编号新数组的最有效方法是什么?
for (var o = 0; o < uncheckedQue[i].childNodes.length; o += 1) {
uncheckedQue[i].removeChild(uncheckedQue[i].childNodes[o]);
if (uncheckedQue[i].childNodes.length < 1) {
delete uncheckedQue[i];//remove the document fragment if has no childnodes
};
};
uncheckedQue = [].concat(uncheckedQue);
0: DocumentFragment
2: DocumentFragment
3: DocumentFragment
4: DocumentFragment
5: DocumentFragment
6: DocumentFragment
7: DocumentFragment
length: 8
***让我澄清一些事情。这些子节点包含在数组中的文档片段中。这些 childNode 不在 Dom 中。
这是外循环。你会注意到我为什么使用删除,所以我保持外循环的长度正确。
for (var i = 0; i < uncheckedQue.length; i += 1) {
//
if (t.mucs === t.mucsstop) { break; };
for (var o = 0; o < uncheckedQue[i].childNodes.length; o += 1) {
uncheckedQue[i].removeChild(uncheckedQue[i].childNodes[o]);
t.mucs += 1;
if (uncheckedQue[i].childNodes.length < 1) {
delete uncheckedQue[i];//remove the document fragment if has no childnodes
};
if (t.mucs === t.mucsstop) { break; };
};
};
【问题讨论】:
-
这是嵌套循环的内部循环还是什么?
标签: javascript arrays indexing