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 :(得分: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);
}