0
if (sorted[i].Document === 'abc' || sorted[i].Document === 'xyz') {
    delete sorted[i].Document;
}

当我尝试删除特定的两个文档时,它会被删除,但下一次它会抛出一个错误,提示 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.

4

1 回答 1

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);
}
于 2013-03-07T15:44:32.650 回答