替换/删除Array中的空条目

时间:2012-06-09 14:14:53

标签: javascript jquery arrays replace

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

但我想删除或替换,,,

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

有空条目的原因是:

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

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

或者我想find()只有已定义ID的DIV ..

6 个答案:

答案 0 :(得分:2)

请尝试使用$('div[id]')。它将选择div属性定义的所有id元素。

答案 1 :(得分:1)

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

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

如果DIV上没有ID,则会返回undefined,并且不会向生成的数组添加任何内容。

答案 2 :(得分:1)

这非常有效:

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

答案 3 :(得分:0)

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

尝试here

答案 4 :(得分:0)

尝试仅定义ID为div的内容:

$(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;
}

答案 5 :(得分:0)

在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()。