我有以下Javascript,我试图在其中修改数组中属性的单个字段。数组itenm可能有任意数量的字段,但模板将只指定rowId (用于标识该项)和新属性值。
代码如下:
function findRow(rowId) {
return this.seniorityList.find(element => element.rowId==rowId);
}
this.seniorityList = [
{Seniority:0, Rate:1.1, rowId:'row-0'},
{Seniority:6, Rate:1.3, rowId:'row-1'},
{Seniority:12, Rate:1.6, rowId:'row-2'},
{Seniority:18, Rate:1.9, rowId:'row-3'},
{Seniority:24, Rate:2.1, rowId:'row-4'}
];
let template = {Rate:99.99, rowId:'row-2'}
let row = findRow('row-2');
row = {...row, ...template };
console.log('array '+JSON.stringify(this.seniorityList));
我更希望输出会显示Rate的更新值,但实际上,它显示的是原始值。如果我对单个行执行console.log,那么它会正确地显示更改,但数组本身没有变化。如何更新数组?
发布于 2021-07-07 00:58:46
{...row, ...template }创建一个新的实例,您可以使用Object.assign覆盖内容(或手动分配)。
function findRow(rowId) {
return seniorityList.find(element => element.rowId==rowId);
}
let seniorityList = [
{Seniority:0, Rate:1.1, rowId:'row-0'},
{Seniority:6, Rate:1.3, rowId:'row-1'},
{Seniority:12, Rate:1.6, rowId:'row-2'},
{Seniority:18, Rate:1.9, rowId:'row-3'},
{Seniority:24, Rate:2.1, rowId:'row-4'}
];
let template = {Rate:99.99, rowId:'row-2'}
let row = findRow('row-2');
//or row.Rate = template.Rate
Object.assign(row,template)
console.log('array '+JSON.stringify(seniorityList));
发布于 2021-07-07 01:02:10
由于您的数组中实际上有一个对象,因此可以使用以下属性:
function findRow(rowId) {
return this.seniorityList.find(element => element.rowId == rowId);
}
this.seniorityList = [{
Seniority: 0,
Rate: 1.1,
rowId: 'row-0'
},
{
Seniority: 6,
Rate: 1.3,
rowId: 'row-1'
},
{
Seniority: 12,
Rate: 1.6,
rowId: 'row-2'
},
{
Seniority: 18,
Rate: 1.9,
rowId: 'row-3'
},
{
Seniority: 24,
Rate: 2.1,
rowId: 'row-4'
}
];
let template = {
Rate: 99.99,
rowId: 'row-2'
}
let row = findRow('row-2');
row.Rate = 99.99;
console.log('array' + JSON.stringify(this.seniorityList))
https://stackoverflow.com/questions/68274520
复制相似问题