Как я сбрасываю элемент в массиве в JavaScript?

Задав этот вопрос, я нашел другое решение (добавив хеш к моему последовательному ключу). Но это все еще интересный вопрос. И я думаю, что лучший ответ - реализовать простой алгоритм блочного шифрования. Здесь есть несколько примеров .

131
задан Steven Noble 16 October 2008 в 00:17
поделиться

3 ответа

Не используйте delete , так как он не удалит элемент из массива, он только установит его как undefined, что не будет правильно отражаться в длине массива.

Если вы знаете ключ, вы должны использовать splice т.е.

myArray.splice(key, 1);

Для кого-то на позиции Стивена вы можете попробовать что-то вроде этого:

for (var key in myArray) {
    if (key == 'bar') {
        myArray.splice(key, 1);
    }
}

или

for (var key in myArray) {
    if (myArray[key] == 'bar') {
        myArray.splice(key, 1);
    }
}
229
ответ дан 24 November 2019 в 00:14
поделиться
delete foo[key];

:D

51
ответ дан 24 November 2019 в 00:14
поделиться

Важное замечание: массивы JavaScript не являются ассоциативными массивами, как те, к которым вы, возможно, привыкли в PHP. Если ваш «ключ массива» является строкой, вы больше не работаете с содержимым массива. Ваш массив является объектом, и вы используете скобки для доступа к члену с именем . Таким образом:

var myArray = [];
myArray["bar"] = true;
myArray["foo"] = true;
alert(myArray.length); // returns 0.

поскольку вы не добавили элементы в массив, вы изменили только элементы bar и foo в myArray.

38
ответ дан 24 November 2019 в 00:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: