我有一种情况,我必须从数组和 .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; };
};
};