Як видалити ключ "bar" з масиву foo, щоб "bar" не відображався в
for(key in foo){alert(key);}
Як видалити ключ "bar" з масиву foo, щоб "bar" не відображався в
for(key in foo){alert(key);}
Відповіді:
Не використовуйте 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);
}
}
for (var key in myArray)
замість for (key in myArray)
- інакше key
це глобальна змінна, і якщо ви викликаєте функцію всередині цього циклу, що має ту ж проблему, ви отримаєте несподівані результати.
delete foo[key];
: D
eval
. Видалення ключа / індексу об'єкта / масиву може бути досягнуто набагато простішими методами, не використовуючими eval
.
Важлива примітка: Масиви JavaScript - це не асоціативні масиви, як ті, до яких ви могли використовуватись із PHP. Якщо ваш "ключ масиву" є рядком, ви більше не працюєте над вмістом масиву. Ваш масив є об'єктом, і ви використовуєте нотацію дужок для доступу до члена, названого <ім'я ключа>. Таким чином:
var myArray = []; myArray ["бар"] = вірно; myArray ["foo"] = вірно; попередження (myArray.length); // повертає 0.
оскільки ви не додали елементів до масиву, ви змінили лише смугу та елементи 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;
}