0

今天一个相当简单的问题。

我有一个看起来像这样的对象:

var buttonLogos = { 
adcraft: [".","..","1.png","2.png","3.png"],
ferries: [".","..","1.png","2.png"]
}

我正在寻找一种快速的方法来删除以点开头的条目,我通常会过滤掉任何带点的内容,但我不能因为我想要的字符串包含 .png

过滤掉前两个条目可能是一种解决方案,因为它们总是“。” 和“..”但唉,我什至不知道该怎么做。

(鼓励使用 jQuery)

我很想得到一些帮助!谢谢。

4

4 回答 4

1
for(i in buttonLogos){
    buttonLogos[i] = buttonLogos[i].filter(function(i){
        return !i.match(/^\.{1,2}$/);
    });
}
于 2013-11-09T19:54:10.960 回答
0

您可以按如下方式使用 js 正则表达式,

buttonLogos.adcraft = $(buttonLogos.adcraft).filter(function(i,val){return val.match(/[^\.]/);});
于 2013-11-09T19:54:18.683 回答
0

其他答案中提到的过滤器或 indexOf 和 splice 的组合也可以使用。

   var adcraft = [".","..","1.png","2.png","3.png"];
    var elems_to_rm = [];
    for (var i = 0; i < adcraft.length; i++) {
        if (adcraft[i].indexOf('.') === 0) {
            elems_to_rm.push(adcraft[i]); 
        }
    }

    for (var i = 0; i < elems_to_rm.length; i++) {
        var index = adcraft.indexOf(elems_to_rm[i]);
        adcraft.splice(index, 1);
    }
于 2013-11-09T19:57:11.997 回答
0

手动尝试。只需指定两个参数即可从数组中删除任意数量的项目:要删除的第一个项目的位置和要删除的项目数。例如, splice(0, 2) 删除前两项。

于 2013-11-09T20:42:07.257 回答