javascript - 如何从 JavaScript 中的多维数组中删除数组?

标签 javascript arrays multidimensional-array splice

所以我目前有一个多维数组,其中包含由函数创建的大量数组,在此结构中

0: Array[10]
    0: Array[5]
    1: Array[5]
    2: Array[5]
    3: Array[5]
    4: Array[5]
    5: Array[5]
    6: Array[5]
    7: Array[5]
    8: 335.74
    9: 10341
1: Array[10]
2: Array[10]
3: Array[10]
.... and so on.

因为创建这个数组的函数是一个计算其中 8 个数组的所有可能组合的函数(最后 2 个数组是在后面附加的),所以这个数组非常长,所以我想过滤掉其中的一些。在这里,我尝试删除最后一个元素上的值高于 10000 的所有数组(如果它确实删除了整个数组)。

for (i = 0; i < comb.length; ++i) {
    if (comb[i][9] > 10000) {
        comb.splice([i],1);
    }
}

因此在第一个示例中,点编号为: 9 高于 10000,因此应该拼接/删除其父级。 目前这只是删除数组的一部分或根本不删除任何内容..

有什么想法吗?谢谢:)

最佳答案

在你的代码中

for (i = 0; i < comb.length; ++i) {
    if (comb[i][9] > 10000) {
        comb.splice([i],1);
    }
}

删除一个元素并将计数器加一。例如,您删除元素 5,计数器上升到 6,访问的元素现在为 7,并且不处理第 6 个元素。

          5         counter i
0 1 2 3 4 5 6 7 8 9 array elements
          5         delete element
0 1 2 3 4 6 7 8 9   array elements
            6       counter i
0 1 2 3 4 6 7 8 9   array elements

因此,具有固定间隔的 for 循环在这里不起作用。

就用while,只有不拼接的时候才增加。

var i = comb.length;
while (i--) {
    if (comb[i][9] > 10000) {
        comb.splice(i, 1);
    }
}

关于javascript - 如何从 JavaScript 中的多维数组中删除数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32655420/

相关文章:

c - c 中的 fscanf 使用 - 值未正确保存

c# - double 数组

c - 在多维数组的 Leu 中使用哈希表

javascript - 有没有办法将数据从 Electron 传递到 webview 中的 URL?

javascript - 在 ajax 完成后做一些事情

javascript - 通过 print-html-element npm 库打印时如何防止下载文件?

php - 从我的 mysql 数据库 php 输出三列

java - Java中嵌套for循环打印二维数组的输出

java - 一次编辑所有二维数组对象?

javascript - 将文本插入 Tumblr 提问框