Удалить значение из ассоциативного массива

Возможный дубликат:
Удалить определенный элемент из массива javascript?

У меня есть массив, из которого я хочу удалить значение.

Рассмотрим это как массив

[ 'utils': [ 'util1', 'util2' ] ]

Теперь я просто хочу удалить util2. Как я могу это сделать, я попытался использовать delete, но это не сработало.

Кто-нибудь может мне помочь?

Ответ 1

Используйте метод splice:

var object = { 'utils': [ 'util1', 'util2' ] }

object.utils.splice(1, 1);

Если вы не знаете фактическую позицию элемента массива, вам нужно будет перебирать массив и сращивать элемент оттуда. Попробуйте выполнить следующий метод:

for (var i = object.utils.length; i--;) {
    var index = object.utils.indexOf('util2');

    if (index === -1) break;

    if (i === index) {
        object.utils.splice(i, 1); break;
    }
}

Обновление: ответ Techfoobar кажется более идиоматичным, чем мой. Подумайте об использовании его вместо этого.

Ответ 2

Вы можете использовать Array.splice() в комбинации с Array.indexOf(), чтобы получить желаемое поведение без необходимости перебирать массив:

var toDelete = object.utils.indexOf('util1');
if(toDelete != -1) {
    object.utils.splice(toDelete, 1);
}

Ответ 3

Я думаю, что в Javascript нет такой вещи, которая называется ассоциативным массивом. Это фактически объект.

[ 'utils': [ 'util1', 'util2' ] ]

Для этой строки я не думаю, что она будет компилироваться. Вы должны написать это вместо этого.

var obj = { 'utils': [ 'util1', 'util2' ] }

Итак, чтобы удалить элемент "util2" в массиве (внутренний массив), существует 2 способа.

  • use pop()

    obj["utils"].pop(); // obj["utils"] is used to access the "property" of the object, not an element in associative array
    
  • уменьшить длину

    obj["utils"].length --;