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这就是我们两个人!去他妈的!