javascript array.splice() 不删除数组中的元素?

标签 javascript jquery

我有一个 remove[] 数组,它包含数据数组中所有 0 元素的所有索引位置(如下所示)。

数据数组:

Retail,1,Utilities,1,Food & Restaurant,3,No Data,4,Construction,0,Non-profit,1,Financial Services,12,Technology,2,Law,3,Religion,3,Retired,2,Insurance,0,Real Estate,2,Audit,3,Business Organizations,3,Media & Marketing,0,Education,3,Transportation,0,Manufacturing,0,Entertainment & Sports,0,Architecture & Engineering,0,Cultural Institutions,0,Government,0,Banking,0,Health Care,0,Business Services,0

我的javascript

   var remove =  [];          
    $.each(options.series[0].data, function(index, item) {
    if (options.series[0].data[index][1] == 0)
    {                    
        //options.series[0].data.splice(index,1);  
        remove[index] = index;                                      

    }

    for (i=0; i<=remove.length; i++)
    {
    //alert(remove);                
    if (remove[i] != undefined)
        options.series[0].data.splice(remove[i],1);

    }   

splice() 之后的数据数组。很多0元素还在。

Retail,1,Utilities,1,Food & Restaurant,3,No Data,4,Non-profit,1,Financial Services,12,Technology,2,Law,3,Religion,3,Retired,2,Insurance,0,Audit,3,Business Organizations,3,Media & Marketing,0,Education,3,Manufacturing,0,Entertainment & Sports,0,Cultural Institutions,0,Banking,0,Business Services,0

如果我改变拼接以包含替换元素

options.series[0].data.splice(remove[i],1,'removed');

从数据数组中删除所有 0 元素。嗯?

Retail,1,Utilities,1,Food & Restaurant,3,No Data,4,removed,Non-profit,1,Financial Services,12,Technology,2,Law,3,Religion,3,Retired,2,removed,Real Estate,2,Audit,3,Business Organizations,3,removed,Education,3,removed,removed,removed,removed,removed,removed,removed,removed,removed

如何删除数据数组中的所有 0 元素?

最佳答案

每次删除一个索引时,都会使任何进一步的缓存索引过时,因为从该点开始的数组会重新编制索引。

结果,您在第一个项目之后删除了错误的项目。

您应该反向迭代 remove 数组。

var i = remove.length;
while (i--) {
    if (remove[i] != undefined)
        options.series[0].data.splice(remove[i],1);
}   

另外,如果你简单地 .push() 每个索引到 remove 中,你可以提高性能并摆脱 undefined 测试数组...

remove.push(index);

关于javascript array.splice() 不删除数组中的元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9675856/

相关文章:

jquery - 使用 jquery 将某些内容 append 到选定的文本

javascript - 如何使用数据集值更新输入字段?

Javascript - 条件不返回 True

javascript - 在大文档中从父 div 获取子 div

javascript - 检测浏览器在调整大小和更新元素位置时宽度变化了多少

javascript - 如果设置了 headers 对象,jQuery.ajax() 会多次发送请求

javascript - 如何通过单击按钮将数据库数据插入文本区域字段

javascript - 使用 javascript 请求远程 XML 数据

javascript - 通过 jquery 设置最小高度

javascript - 带有内联 block 的奇怪的成长动画