Удаление значения в объекте, если оно содержит строку

0

довольно простой вопрос сегодня.

У меня есть объект, который выглядит так:

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

и я ищу быстрый способ удалить записи в начале с точками, я обычно просто отфильтровывал что-либо с точкой, но я не могу, потому что строки, которые я хочу, содержат.png

это может быть решением для фильтрации первых двух записей, потому что они всегда будут ".". и "..", но, увы, я не уверен, как это сделать.

(приветствуется jQuery)

Я хотел бы помочь! Благодарю.

  • 0
    Вы можете сделать splice (2) для каждого значения свойства, которое является массивом.
  • 1
    Ааа, неправильно. Вы должны сделать сплайс (0, 2), который удалит первые два элемента. Например: for (var prop in buttonLogos) { buttonLogos[prop].splice(0, 2); }
Теги:
object
filter

4 ответа

1
for(i in buttonLogos){
    buttonLogos[i] = buttonLogos[i].filter(function(i){
        return !i.match(/^\.{1,2}$/);
    });
}
  • 0
    Обратите внимание, что Array.filter недоступен в IE8 и ниже.
  • 0
    Я должен ... но вы сделали это для меня - и это субботний вечер, и я уже пьян, поэтому IE8 может пойти и повернуть: P
Показать ещё 1 комментарий
0

Попробуйте вручную. Любое количество элементов можно удалить из массива, указав только два аргумента: позицию первого элемента для удаления и количество элементов для удаления. Например, сращивание (0, 2) удаляет первые два элемента.

0

Фильтры, упомянутые в других ответах или комбинации 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);
    }
0

Вы можете использовать js regex следующим образом:

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню