Javascript 根据对象是否包含字符串删除对象中的值

Javascript 根据对象是否包含字符串删除对象中的值,javascript,jquery,object,filter,Javascript,Jquery,Object,Filter,今天的问题相当简单 我有一个像这样的对象: var buttonLogos = { adcraft: [".","..","1.png","2.png","3.png"], ferries: [".","..","1.png","2.png"] } 我正在寻找一种快速的方法来删除以点开头的条目,我通常只会过滤掉任何带有点的条目,但是我不能,因为我想要的字符串包含一个.png 过滤掉前两个条目可能是一个解决方案,因为它们始终是“.”和“.”。但是,唉,我甚至不知道如何做到这一点 (鼓励使用jQ

今天的问题相当简单

我有一个像这样的对象:

var buttonLogos = { 
adcraft: [".","..","1.png","2.png","3.png"],
ferries: [".","..","1.png","2.png"]
}
我正在寻找一种快速的方法来删除以点开头的条目,我通常只会过滤掉任何带有点的条目,但是我不能,因为我想要的字符串包含一个.png

过滤掉前两个条目可能是一个解决方案,因为它们始终是“.”和“.”。但是,唉,我甚至不知道如何做到这一点

(鼓励使用jQuery)


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

您可以按如下方式使用js regex

for(i in buttonLogos){
    buttonLogos[i] = buttonLogos[i].filter(function(i){
        return !i.match(/^\.{1,2}$/);
    });
}
buttonLogos.adcraft = $(buttonLogos.adcraft).filter(function(i,val){return val.match(/[^\.]/);});

其他答案中提到的过滤器或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);
    }
var-adcraft=[“,”,“1.png”,“2.png”,“3.png”];
var elems_to_rm=[];
对于(变量i=0;i
手动尝试。只要指定两个,就可以从数组中删除任意数量的项 参数:要删除的第一个项目的位置和要删除的项目数。对于
例如,splice(0,2)删除前两项。

可以对数组中的每个属性值执行splice(2)。啊,错误。您必须执行拼接(0,2),这将删除前两项。例如:
For(buttonLogos中的var prop){buttonLogos[prop].splice(0,2);}
您应该注意,
Array.filter
在IE8及以下版本中不可用。我应该。。。但你是为我做的-这是一个周六的晚上,我已经喝醉了,所以IE8可以去旋转:P这就是我们两个人!去他妈的!