Javascript 数组中的替换项并不总是有效

Javascript 数组中的替换项并不总是有效,javascript,Javascript,我有以下代码 let item = this.datasets.filter((item) => item.id === tableRow.id); if (item && item.length != 0) { // Update case item[0] = tableRow; } 它无法正确更新项目。有时有效,有时无效 我将上述代码替换为以下代码: let index = -1; for (l

我有以下代码

    let item = this.datasets.filter((item) => item.id === tableRow.id);
    if (item && item.length != 0) {
        // Update case
        item[0] = tableRow; 
    }
它无法正确更新项目。有时有效,有时无效

我将上述代码替换为以下代码:

    let index = -1;
    for (let i = 0; i < this.datasets.length; i++) {
        if (this.datasets[i].id === tableRow.id) {
            index = i;
        }
    }

    if (index !== -1) {
        // Update case (delete + insert)
        this.datasets.splice(index, 1, tableRow);
    }
let index=-1;
for(设i=0;i
这总是有效的。第一种方法有什么问题


谢谢

在第一种情况下,
保存了该方法返回的新数组,因此更改
数组中的元素不会对
数据集
数组进行任何更改。
您甚至可以使用方法简化第二种方法


item是一个新数组,更新item中的元素不会反映在主数组中使用
let index=this.datasets.findIndex((item)=>item.id==tableRow.id);如果(索引>-1)此.dataset.splice(索引,1,表行)
let index = this.datasets.findIndex((item) => item.id === tableRow.id);
if(index > -1) this.datasets.splice(index,1,tableRow)