Javascript 如果对象A在对象B中具有相同的属性,如何将数组中的对象A替换为B

Javascript 如果对象A在对象B中具有相同的属性,如何将数组中的对象A替换为B,javascript,arrays,ecmascript-6,Javascript,Arrays,Ecmascript 6,我试图从两个不同的数组中获取一个数组。我不知道如何使用ES6 我要将当前\u年\u数据替换为上一年\u数据 第一个数组是: let previous_year_data = [ { month: "January", value: 300 }, { month: "February", value: 1 }, { month: "March", value: 2 }, { month: "April", value: 3 }, { month: "May", value: 4

我试图从两个不同的数组中获取一个数组。我不知道如何使用ES6

我要将
当前\u年\u数据
替换为
上一年\u数据

第一个数组是:

let previous_year_data = [
  { month: "January", value: 300 },
  { month: "February", value: 1 },
  { month: "March", value: 2 },
  { month: "April", value: 3 },
  { month: "May", value: 4 },
  { month: "Jun", value: 5 },
  { month: "July", value: 6 },
  { month: "August", value: 7 },
  { month: "September", value: 8 },
  { month: "October", value: 9 },
  { month: "November", value: 10 },
  { month: "December", value: 11 },
];
第二个阵列:

let current_year_data = [
  { month: "January", value: 4459 }
];
结果应该是:

let current_year_data = [
  { month: "January", value: 4459 },
  { month: "February", value: 1 },
  { month: "March", value: 2 },
  { month: "April", value: 3 },
  { month: "May", value: 4 },
  { month: "Jun", value: 5 },
  { month: "July", value: 6 },
  { month: "August", value: 7 },
  { month: "September", value: 8 },
  { month: "October", value: 9 },
  { month: "November", value: 10 },
  { month: "December", value: 11 },
];

谢谢

可以使用
map
方法。此外,您可以使用
Map
collection在
Map
数组时访问元素项的
O(1)

let unique = new Map(current_year_data.map(s=> [s.month, s.value]))
previous_year_data.map(({month, value})=> ({month, value: unique.get(month) || value }));
例如:

让上一年数据=[
{月份:“一月”,值:300},
{月份:“二月”,值:1},
{月份:“三月”,值:2},
{月份:“四月”,值:3},
{月份:“五月”,值:4},
{月份:“六月”,值:5},
{月份:“7月”,数值:6},
{月份:“八月”,值:7},
{月份:“9月”,数值:8},
{月份:“10月”,数值:9},
{月份:“11月”,价值:10},
{月份:“12月”,价值:11},
];
让当前年数据=[
{月份:“一月”,价值:4459}
];
let unique=新映射(当前年数据映射(s=>[s.month,s.value]))
const result=上一年数据.map({month,value})=>
({month,value:unique.get(month)| | value}));

console.log(result)
对于此类需求,组合或合并键唯一的JSON数组将有效!见下文:

//注意:这将拾取列表中最后一个重复项。

const上一年数据=[
{月份:“一月”,值:300},
{月份:“二月”,值:1},
{月份:“三月”,值:2},
{月份:“四月”,值:3},
{月份:“五月”,值:4},
{月份:“六月”,值:5},
{月份:“7月”,数值:6},
{月份:“八月”,值:7},
{月份:“9月”,数值:8},
{月份:“10月”,数值:9},
{月份:“11月”,价值:10},
{月份:“12月”,价值:11},
];
常数当前年数据=[
{月份:“一月”,价值:4459}
];
常量键='month'//将此密钥替换为唯一密钥
常量结果=[…新映射([…上一年数据,…当前年数据])。映射(项=>
[项[键],项])。值();
控制台日志(结果);
/*输出
[
{
“月”:“一月”,
“价值”:4459
},
{
“月”:“二月”,
“价值”:1
},
{
“月”:“三月”,
“价值”:2
},
{
“月”:“四月”,
“价值”:3
},
{
“月”:“五月”,
“价值”:4
},
{
“月”:“六月”,
“价值”:5
},
{
“月”:“七月”,
“价值”:6
},
{
“月”:“八月”,
“价值”:7
},
{
“月”:“九月”,
“价值”:8
},
{
“月”:“十月”,
“价值”:9
},
{
“月”:“十一月”,
“价值”:10
},
{
“月”:“十二月”,
“价值”:11
}
]
*/