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

javascript arrays

166541 просмотра

6 ответа

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

for(key in foo){alert(key);}
Автор: Steven Noble Источник Размещён: 29.07.2019 03:44

Ответы (6)


224 плюса

Решение

Не используйте 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);
    }
}
Автор: going Размещён: 28.08.2009 05:08

50 плюса

delete foo[key];

: D

Автор: nlaq Размещён: 16.10.2008 12:21

36 плюса

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

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

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

Автор: John Factorial Размещён: 04.05.2010 03:06

31 плюса

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

delete array['key_name']
Автор: user3177525 Размещён: 09.01.2014 12:28

2 плюса

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

 myArray.splice( myArray.indexOf('bar') , 1) 
Автор: stackoverflows Размещён: 12.10.2017 06:23

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;
}
Автор: ling Размещён: 04.08.2011 08:01
Вопросы из категории :
32x32