首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Javascript中修改数组值

在Javascript中修改数组值
EN

Stack Overflow用户
提问于 2021-07-07 00:51:06
回答 2查看 48关注 0票数 0

我有以下Javascript,我试图在其中修改数组中属性的单个字段。数组itenm可能有任意数量的字段,但模板将只指定rowId (用于标识该项)和新属性值。

代码如下:

代码语言:javascript
复制
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,那么它会正确地显示更改,但数组本身没有变化。如何更新数组?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-07-07 00:58:46

{...row, ...template }创建一个新的实例,您可以使用Object.assign覆盖内容(或手动分配)。

代码语言:javascript
复制
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));

票数 3
EN

Stack Overflow用户

发布于 2021-07-07 01:02:10

由于您的数组中实际上有一个对象,因此可以使用以下属性:

代码语言:javascript
复制
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))

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68274520

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档