4

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

但我想删除或,,替换,

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

有空条目的原因是:

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

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

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

4

6 回答 6

2

这非常有效:

theArray = theArray.filter(function(e) { return e; });
于 2012-11-04T07:21:06.290 回答
2

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

于 2012-06-09T14:27:04.337 回答
1

把你的id聚会改成这样……

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

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

于 2012-06-09T14:26:44.760 回答
0

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

在这里试试

于 2012-06-09T14:22:22.143 回答
0

尝试只获取div定义了 ID 的 s:

$(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;
}
于 2012-06-09T14:31:13.590 回答
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() 。

于 2012-06-09T15:44:51.320 回答