Как удалить строку "bar" из массива foo, чтобы "bar" не отображался в
for(key in foo){alert(key);}
Как удалить строку "bar" из массива foo, чтобы "bar" не отображался в
for(key in foo){alert(key);}
Не используйте удалить, так как он не удалит элемент из массива, он установит его как undefined, который затем не будет правильно отображаться в длине массива.
Если вы знаете ключ, вы должны использовать сращивание i.e.
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);
}
}
delete foo[key];
: D
Важное примечание: массивы JavaScript не являются ассоциативными массивами, такими как те, с которыми вы могли бы работать с PHP. Если ваш "массив" - это строка, вы больше не работаете с содержимым массива. Ваш массив является объектом, и вы используете скобку для доступа к члену с именем < key name > . Таким образом:
var myArray = []; myArray["bar"] = true; myArray["foo"] = true; alert(myArray.length); // returns 0.
потому что вы не добавили элементы в массив, вы только изменили строку myArray и члены foo.
Если вы знаете имя ключа, просто выполните следующие действия:
delete array['key_name']
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;
}
Вот как я это сделаю
myArray.splice( myArray.indexOf('bar') , 1)