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

Removing a value in an object based on if it contains a string

本文关键字:字符串 删除 包含 是否 对象      更新时间:2023-09-26

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

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

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

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

过滤掉前两个条目可能是一种解决方案,因为它们将始终是"."和"..",但唉,我甚至不确定该怎么做。

(鼓励jQuery)

我希望得到一些帮助!谢谢。

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

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

buttonLogos.adcraft = $(buttonLogos.adcraft).filter(function(i,val){return val.match(/[^'.]/);});

其他答案中提到的过滤器或 indexOf 和拼接的组合也可以工作。

   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);
    }

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