我有一个 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/