довольно простой вопрос сегодня.
У меня есть объект, который выглядит так:
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}$/);
});
}
Array.filter
недоступен в IE8 и ниже.
Попробуйте вручную. Любое количество элементов можно удалить из массива, указав только два аргумента: позицию первого элемента для удаления и количество элементов для удаления. Например, сращивание (0, 2) удаляет первые два элемента.
Фильтры, упомянутые в других ответах или комбинации 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);
}
Вы можете использовать js regex следующим образом:
buttonLogos.adcraft = $(buttonLogos.adcraft).filter(function(i,val){return val.match(/[^\.]/);});
for (var prop in buttonLogos) { buttonLogos[prop].splice(0, 2); }