Задав этот вопрос, я нашел другое решение (добавив хеш к моему последовательному ключу). Но это все еще интересный вопрос. И я думаю, что лучший ответ - реализовать простой алгоритм блочного шифрования. Здесь есть несколько примеров .
Не используйте 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);
}
}
Важное замечание: массивы JavaScript не являются ассоциативными массивами, как те, к которым вы, возможно, привыкли в PHP. Если ваш «ключ массива» является строкой, вы больше не работаете с содержимым массива. Ваш массив является объектом, и вы используете скобки для доступа к члену с именем
var myArray = []; myArray["bar"] = true; myArray["foo"] = true; alert(myArray.length); // returns 0.
поскольку вы не добавили элементы в массив, вы изменили только элементы bar и foo в myArray.