替换/删除数组中的空条目

Posted

技术标签:

【中文标题】替换/删除数组中的空条目【英文标题】:Replace/remove empty entries in Array 【发布时间】:2012-06-13 06:32:19 【问题描述】:

我有这个数组:[home, info, mail,,,, something, stuff, other]

但我想删除或替换 ,,,

我试过了:allIDs.replace(",,", ","); 但它似乎不适用于数组

有空条目的原因是这样的:

$(document).find('DIV').each(function()
    allIDs.push(this.id); )

我正在索引所有 DIV 的 ID 名称,以检查是否有重复,然后重命名当前生成的 DIV ID..

或者,我只想find() 只定义了 ID 的 DIV..

【问题讨论】:

【参考方案1】:

改用$('div[id]')。它将选择所有定义了id 属性的div 元素。

【讨论】:

【参考方案2】:

这真的很好用:

theArray = theArray.filter(function(e)  return e; );

【讨论】:

【参考方案3】:

将您的id 聚会更改为此...

var allIDs = $(document).find('DIV')
                        .map(function() return this.id || undefined )
                        .toArray();

如果 DIV 上没有 ID,则将返回 undefined,并且不会将任何内容添加到结果数组中。

【讨论】:

【参考方案4】:

您想要的是从数组中删除空值,而不是用 , 替换 ,, 我想。

试试here

【讨论】:

【参考方案5】:

尝试仅获取已定义 ID 的 divs:

$(document).find('div[id]').each(function()
    allIDs.push(this.id); );
);

但是如果你想清理数组:

allIDs = clean_up(allIDs);

function clean_up(a)
    var b = []
    for(i in a) if(a[i] && a[i].length) a.push(a[i]);
    return a;

【讨论】:

【参考方案6】:

javascript 中,不能只删除数组中的 ',,,' 来解决问题。

你的意思是数组 ['home', 'info', '', '', '', '', 'mail', 'something', 'stuff', 'other']?

假设有一些空字符串,你想删除它们。

你可以使用一个简单的javascript函数:

allIDs = ["home", "info", "", "", "", "", "mail", "something", "stuff", "other"];

remove_empty_str = function(arr) 
  new_array = [];
  for (ii = 0, len = arr.length; ii < len; ii++) 
    item = arr[ii];
    if (item !== "" || item !== null || item !== (void 0)) 
      new_array.push(item);
    
  
  return new_array;
;

newIDs = remove_empty_str(allIDs);

alert(newIDs);

我认为在执行任何 jQuery 输出之前处理数组是更好的做法。

您也可以在其他应用中重复使用 remove_empty_str()。

【讨论】:

以上是关于替换/删除数组中的空条目的主要内容,如果未能解决你的问题,请参考以下文章

删除熊猫系列中的空列表

如何删除数组中的空元素[重复]

删除数组中的空双引号元素,同时保留其他元素

如何删除多维字符串数组中的空元素?

PHP:删除多维数组中的空数组字符串[重复]

PHP 删除数组中的空值