【问题标题】:Add key and value to an array using javascript使用javascript向数组添加键和值
【发布时间】:2022-01-13 18:49:32
【问题描述】:

我有两个对象,我需要创建一个具有新结构的新数组,例如: 这些是我的对象:

对象 1: [{ “问题”:“气候变化”, “总计”:“3.456” }]

对象 2: [{ “问题”:“气候变化”, “总计”:“3.567” }]

我需要这个输出

[{ “x”:3.456, “y”:3.567 }]

我尝试使用其中一个数组创建我需要的数组...所以我使用了第一个数组: [{y:3.456}] 并且它有效,现在我需要添加 x 键和值第二个数组,所以我尝试了这个:

其中 chardatavalue 是数组之一(其中包含“y”键和值),而 arrayforxls2 是另一个,但我只将 seconf 数组的最后一个值分配给所有“x”键。

var resultnew = chartdatavalue.map(function (el) {
 var o = Object.assign({}, el);

     for (let i of arrayforxls2) {
         
         o.x = i.Total;
                
      }
      return o;
    });

chartdatavalue 的结构如下:

[{
y: '3.893'
}]

arrayxls2 有这样的结构:

[{
"Question":"Climate change",
"Total":"3.567"
}]

我需要这个输出:

[{ “x”:3.567, “y”:3.893 }] 你能帮帮我吗?

【问题讨论】:

  • 展示你的努力。
  • 我编辑了我的问题 trincot,谢谢。
  • 什么是arrayforxls2?它在任何地方都没有定义。 chartdatavalue 的值是多少。请提供我们重现您的问题所需的代码。
  • 好的,我添加了包含chartdatavalue和arrayforxls2的内容
  • 我不明白您要对这两个对象应用哪种逻辑来生成合并对象。 arrayforxls2 有一个数字,arrayforxls2 有三个。这张图是怎么来的?

标签: javascript arrays object


【解决方案1】:

您可能正在寻找这个:

var resultnew = chartdatavalue.map(function (el, i) {
    return Object.assign({ x: arrayforxls2[i].Total }, el);
});

这里的变化是i被捕获并使用,因此一个数组中的第ith对象与另一个数组的第ith对象合并。

您也可以使用对象扩展语法代替Object.assign

var resultnew = chartdatavalue.map((el, i) =>
    ({ x: arrayforxls2[i].Total, ...el})
);

或者,当el 中还有其他需要忽略的属性时,使用对象解构:

var resultnew = chartdatavalue.map(({y}, i) =>
    ({ x: arrayforxls2[i].Total, y})
);

【讨论】:

  • 是的!非常感谢!!!!
【解决方案2】:

类似这样的:

var resultnew = chartdatavalue.map((el, i) => ({x: el.Total, y: arrayforxls2[i].Total}));

这会遍历其中一个数组,并使用索引i 从另一个数组中的相应对象中获取值。

使用Object.assign() 没有意义,因为结果对象不包含输入对象的任何属性名称。

【讨论】:

    猜你喜欢
    • 2016-06-12
    • 1970-01-01
    • 2023-02-22
    • 1970-01-01
    • 2021-07-01
    • 1970-01-01
    • 2019-08-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多