Javascript 从数组中删除特定值

Javascript 从数组中删除特定值,javascript,Javascript,当我试图删除特定的两个文档时,它会被删除,但下一次它会向我抛出一个错误,说文档未定义 if (sorted[i].Document === 'abc' || sorted[i].Document === 'xyz') { delete sorted[i].Document; } 我正在对文档进行排序,然后对其进行迭代,然后尝试删除那些文档,它们是abc和xyz您试图对不存在的属性调用toLowerCase,因为您刚刚删除了它们。在尝试对它们执行方法之前,请检查它们是否存在 var so

当我试图删除特定的两个文档时,它会被删除,但下一次它会向我抛出一个错误,说文档未定义

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

我正在对文档进行排序,然后对其进行迭代,然后尝试删除那些文档,它们是
abc和xyz

您试图对不存在的属性调用
toLowerCase
,因为您刚刚删除了它们。在尝试对它们执行方法之前,请检查它们是否存在

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

    return nameA.localeCompare(nameB);
});
如果试图删除数组元素而不仅仅是其
文档
属性,则应使用
拼接
而不是
删除

// 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() : '';

它确实会删除属性
文档
,但不会删除数组中的元素。我正在尝试删除文档属性值。
if (sorted[i].Document === 'abc' || sorted[i].Document === 'xyz') {
    sorted.splice(i, 1);
}