【问题标题】:How to assign a value to a specific object property in Array? [duplicate]如何为数组中的特定对象属性赋值? [复制]
【发布时间】:2022-02-03 01:26:27
【问题描述】:

我有一个包含如下对象的数组:

[{Date: null, Dossie1: null}, {Date: null, Dossie1: null}, {Date: null, Dossie1: null}]

我需要为每个特定对象的属性分配一个值。

  let dataset = Array(dates.length).fill(objectTemplate)
  for (let i=0; i<dates.length; i++) {
    dataset[i].Date = dates[i]
  }

但问题是当我这样做的时候。 每个对象都分配有最后一项。 例如,如果 dates 有 3 个值 [1,2,3]。 数组 dataset 中的属性将被分配 3 而不是 1,2,3

【问题讨论】:

  • Array(dates.length).fill(objectTemplate) 这不是一个充满相同对象的数组,这是一个反复填充相同对象的数组。
  • 我看到你通过 for 循环循环了 3 次,每次你调用每个 Dataset 元素的 Date 并将值存储在其中,因此你得到的输出为 1,2,3 请限制迭代根据您的要求通过条件(如果或过滤)
  • Array.from(dates, () =&gt; Object.assign({}, objectTemplate))

标签: javascript arrays reactjs javascript-objects


【解决方案1】:

您可以使用返回模板副本的回调填充数组(通过使用扩展运算符)。

Array.from({ length: dates.length }, () => ({ ...objectTemplate }))

const
  dates = [
    { Date: null, Dossie1: null },
    { Date: null, Dossie2: null },
    { Date: null, Dossie3: null },
  ],
  objectTemplate = { Date: null },
  dataset = Array.from({ length: dates.length }, () => ({ ...objectTemplate }));

for (let i = 0; i < dates.length; i++) {
  dataset[i].Date = dates[i];
}

console.log(dataset);
.as-console-wrapper { top: 0; max-height: 100% !important; }

【讨论】:

  • 问题已经有了答案(重复目标+评论)。那为什么是这个?
  • @Andreas 抱歉,我在它被标记为骗子之前回复了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-11-12
  • 1970-01-01
  • 2014-12-01
  • 2015-10-17
  • 2020-02-03
  • 2019-02-16
  • 1970-01-01
相关资源
最近更新 更多