Как удалить объекты из ассоциативного массива JavaScript? - PullRequest
566 голосов
/ 06 декабря 2008

Предположим, у меня есть этот код:

var myArray = new Object();
myArray["firstname"] = "Bob";
myArray["lastname"] = "Smith";
myArray["age"] = 25;

Теперь, если я хочу удалить "фамилию"? .... есть какой-то эквивалент
myArray["lastname"].remove()

(мне нужен элемент, потому что количество элементов важно, и я хочу, чтобы все было чисто.)

Ответы [ 15 ]

3 голосов
/ 20 мая 2013

Если по какой-либо причине ключ удаления не работает (как будто он не работает для я)

Вы можете склеить его, а затем отфильтровать неопределенные значения

// to cut out one element via arr.splice(indexToRemove, numberToRemove);
array.splice(key, 1)
array.filter(function(n){return n});

Не пытайтесь объединить их в цепочку, поскольку splice возвращает удаленные элементы;

2 голосов
/ 07 января 2016

Мы также можем использовать его как функцию. Angular создает некоторую ошибку, если используется в качестве прототипа. Спасибо @HarpyWar. Это помогло мне решить проблему.

var removeItem = function (object, key, value) {
    if (value == undefined)
        return;

    for (var i in object) {
        if (object[i][key] == value) {
            object.splice(i, 1);
        }
    }
};

var collection = [
    { id: "5f299a5d-7793-47be-a827-bca227dbef95", title: "one" },
    { id: "87353080-8f49-46b9-9281-162a41ddb8df", title: "two" },
    { id: "a1af832c-9028-4690-9793-d623ecc75a95", title: "three" }
];

removeItem(collection, "id", "87353080-8f49-46b9-9281-162a41ddb8df");
2 голосов
/ 29 мая 2014

Это очень просто, если у вас есть underscore.js зависимость в вашем проекте -

_.omit(myArray, "lastname")
1 голос
/ 06 августа 2014

Используя ключевое слово "delete", он удалит элемент массива из массива в javascript.

Например,

Рассмотрим следующие утверждения.

var arrayElementToDelete = new Object();

arrayElementToDelete["id"]           = "XERTYB00G1"; 
arrayElementToDelete["first_name"]   = "Employee_one";
arrayElementToDelete["status"]       = "Active"; 

delete arrayElementToDelete["status"];

Последняя строка кода удалит элемент массива, ключ которого «status», из массива.

0 голосов
/ 14 июня 2017
var myArray = newmyArray = new Object(); 
myArray["firstname"] = "Bob";
myArray["lastname"] = "Smith";
myArray["age"] = 25;

var s = JSON.stringify(myArray);

s.replace(/"lastname[^,}]+,/g,'');
newmyArray = JSON.parse(p);

Без зацикливания / повторения мы получаем тот же результат

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...