今天一个相当简单的问题。
我有一个看起来像这样的对象:
var buttonLogos = {
adcraft: [".","..","1.png","2.png","3.png"],
ferries: [".","..","1.png","2.png"]
}
我正在寻找一个快速的方法来删除点开头的条目,我通常会用点过滤掉任何东西,但我不能,因为我想要的字符串包含.png
它可能是一个过滤掉前两个条目的解决方案,因为它们总是“。”和“..”但是唉,我不知道怎么做到这一点。
(鼓励jQuery)
我会喜欢一些帮助!感谢。
答案 0 :(得分:1)
for(i in buttonLogos){
buttonLogos[i] = buttonLogos[i].filter(function(i){
return !i.match(/^\.{1,2}$/);
});
}
答案 1 :(得分:0)
您可以按如下方式使用js正则表达式,
buttonLogos.adcraft = $(buttonLogos.adcraft).filter(function(i,val){return val.match(/[^\.]/);});
答案 2 :(得分: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);
}
答案 3 :(得分:0)
手动尝试。通过仅指定两个项,可以从数组中删除任意数量的项 arguments:要删除的第一个项的位置和要删除的项的数量。对于 例如,splice(0,2)删除前两项。