2013-10-03 3 views
0

Я создал array:запись удалить из массива яваскрипта

myarray = new Array(); 
myarray['test_a'] = "test a"; 
myarray['test_b'] = "test b"; 

Теперь я хотел бы, чтобы удалить запись с индексом «test_b». Я пробовал этот путь:

var del = "test_b"; 
for(key in myarray){ 
    if(key==del){ 
     myarray.splice(key,1); 
    } 
} 

Однако он не работает. Нет ошибки. Я только что проверил в firebug записи для массива и упомянул, что «test_b» все еще существует. Что не так? Спасибо за помощь.

ответ

5

Массивы должны иметь числовые индексы, вы хотите объект, тогда вы можете просто использовать delete:

var obj = {}; 
obj.test_a = "test a"; 
obj.test_b = "test b"; 

var del = "test_b"; 
delete obj[del]; 

console.log(obj); //=> { test_a: "test_a" } 
4

splice работает с числовым индексом, у вас есть то, что вы добавили свойство к объекту массива. Вы можете просто сделать delete, чтобы удалить свойство из объекта массива.

delete myarray[del]; 

Demo

если вы только определения свойств на массив и использовать его так же, как объект, то лучше рассмотреть возможность использования объекта вместо создания массива для хранения свойств

+0

Это абсолютно сработает. Однако важно знать, что ни один из элементов не попал в массив. Это неправильный тип объекта для использования в этом случае. – rescuecreative

+1

@rescuecreative Да, конечно, это часть использования, но нет никакого вреда, создающего свойство объекта массива, иногда вы можете сохранить ключ ключа в качестве свойства, чтобы получить быстрый доступ к индексу на основе значения , Но с ограниченным кодом в сообщении, не уверен, что он может быть изначально. – PSL

Смежные вопросы