2013-03-07 2 views
0
if (sorted[i].Document === 'abc' || sorted[i].Document === 'xyz') { 
    delete sorted[i].Document; 
} 

Когда я пытаюсь удалить эти два документа, он удаляется, но в следующий раз он выдает мне сообщение об ошибке, поскольку документ не определен.Удаление определенного значения из массива

var sorted = DocumentListData.Documents.sort(function (a, b) { 
    var nameA = a.Document.toLowerCase(), 
     nameB = b.Document.toLowerCase(); 

    return nameA.localeCompare(nameB); 
}); 

Я сортировка документов, а затем перебор, а затем пытаюсь удалить документы, которые abc and xyz.

+0

Это делает удалить атрибут 'Document', но не элемент в массиве. – Amberlamps

ответ

0

Вы пытаетесь позвонить toLowerCase по свойствам, которых нет, потому что вы просто удалили их. Проверьте, существуют ли они, прежде чем пытаться выполнить на них методы.

// i used empty string as the default, you can use whatever you want 
var nameA = a.Document ? a.Document.toLowerCase() : ''; 
var nameB = b.Document ? b.Document.toLowerCase() : ''; 

Если вы пытаетесь удалить элементы массива, а не только их Document свойства, вы должны использовать splice вместо delete:

if (sorted[i].Document === 'abc' || sorted[i].Document === 'xyz') { 
    sorted.splice(i, 1); 
} 
+0

Я пытаюсь удалить значение свойств документа. – theJava