Как удалить ключ bar из массива foo, чтобы bar не отображался в
for(key in foo){alert(key);}
Как удалить ключ bar из массива foo, чтобы bar не отображался в
for(key in foo){alert(key);}
Ответы:
Не используйте 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);
}
}
for (var key in myArray)вместо for (key in myArray)- в противном случае keyэто глобальная переменная, и если вы вызовете функцию внутри этого цикла, которая имеет ту же проблему, вы получите неожиданные результаты.
delete foo[key];
: D
eval. Удаление ключа / индекса объекта / массива может быть достигнуто с помощью гораздо более простых методов, которые не используются eval.
Важное замечание: массивы JavaScript не являются ассоциативными массивами, как те, к которым вы, возможно, привыкли в PHP. Если ваш «ключ массива» является строкой, вы больше не работаете с содержимым массива. Ваш массив является объектом, и вы используете скобку для доступа к члену с именем <key name>. Таким образом:
var myArray = []; myArray ["bar"] = true; myArray ["foo"] = истина; предупреждение (myArray.length); // возвращает 0.
поскольку вы не добавляли элементы в массив, вы изменили только элементы bar и foo в myArray.
Если вы знаете имя ключа, просто сделайте так:
delete array['key_name']
Вот как бы я это сделал
myArray.splice( myArray.indexOf('bar') , 1)
http://www.internetdoc.info/javascript-function/remove-key-from-array.htm
removeKey(arrayName,key);
function removeKey(arrayName,key)
{
var x;
var tmpArray = new Array();
for(x in arrayName)
{
if(x!=key) { tmpArray[x] = arrayName[x]; }
}
return tmpArray;
}