Как мне сбросить элемент в массиве в JavaScript? - PullRequest
126 голосов
/ 16 октября 2008

Как мне удалить ключ 'bar' из массива foo, чтобы "bar" не отображался в

for(key in foo){alert(key);}

Ответы [ 6 ]

222 голосов
/ 28 августа 2009

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

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

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);
    }
}
50 голосов
/ 16 октября 2008
delete foo[key];

: D

36 голосов
/ 04 мая 2010

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

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

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

30 голосов
/ 09 января 2014

Если вы знаете имя ключа, просто сделайте так:

delete array['key_name']
1 голос
/ 12 октября 2017

Вот как бы я это сделал

 myArray.splice( myArray.indexOf('bar') , 1) 
1 голос
/ 04 августа 2011

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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...