如何更新对象的某些属性?

时间:2021-01-29 06:31:46

标签: javascript

我有一个具有很多属性的对象,但我只想更新其中的三个 到目前为止,我正在更新:

  local.primary = (local.primary).toFixed(3)
  local.second = local.second.toFixed(3)
  local.last =local.last.toFixed(3)

有没有更好的方法?

1 个答案:

答案 0 :(得分:2)

如果您想保持 DRY,您可以使用 Object.fromEntries 并映射要更改的属性数组:

Object.assign(
  local,
  Object.fromEntries(
    ['primary', 'second', 'last'].map(
      prop => [prop, local[prop].toFixed(3)]
    )
  )
);

如果你真的想传播,我想如果重新分配对象或创建一个新对象是可以的,我想你可以做到:

const newObj = {
  ...local,
  ...Object.fromEntries(
    ['primary', 'second', 'last'].map(
      prop => [prop, local[prop].toFixed(3)]
    )
  )
};

但如果只有 3 个属性,我认为单独列出它们一点也不坏:

Object.assign(
  local,
  {
    primary: local.primary.toFixed(3),
    second: local.second.toFixed(3),
    last: local.last.toFixed(3),
  }
);

不清楚整个数据结构是什么,但 primarysecondlast 作为它们自己的独立属性对象或数组可能会更好。