it-swarm.com.ru

Как мне сбросить элемент в массиве в JavaScript?

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

for(key in foo){alert(key);}
121
Steven Noble

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

Если вы знаете ключ, вы должны использовать splice 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);
    }
}
217
going
delete foo[key];

: D

48
nlaq

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

 var myArray = []; 
 myArray ["bar"] = true; 
 myArray ["foo"] = true; 
 alert (myArray.length); // возвращает 0 .

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

36
John Factorial

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

delete array['key_name']
29
user3177525

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;
}
1
ling

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

 myArray.splice( myArray.indexOf('bar') , 1) 
0
stackoverflows