Я хотел бы заменить значения первого массива вторым массивом, если ключи совпадают
Массив, который будет использоваться для обновления.
[
{
"19": 0,
},
{
"20": 0,
},
{
"21": 0,
},
{
"22": 0,
},
{
"23": 0,
},
{
"24": 0,
},
...
Массив, которыйсодержит данные, использованные для обновления первого массива.
[
{
"19": 2,
},
{
"20": 1,
},
{
"23": 1,
},
]
Результат, который я хотел бы получить.
[
{
"19": 2,
},
{
"20": 1,
},
{
"21": 0,
},
{
"22": 0,
},
{
"23": 1,
}
...
Это то, что я написал, но не смог добиться успеха, код возвращаетмассив со всеми обновленными значениями, даже теми, которые не должны обновляться.
const fakeData = [
{
"createdAt": "2019-09-19T22:51:00.386Z",
"name": "Yank",
},
{
"createdAt": "2019-09-19T22:51:00.386Z",
"name": "Yank",
},
{
"createdAt": "2019-09-20T22:51:00.386Z",
"name": "Yank",
},
{
"createdAt": "2019-09-23T22:51:00.386Z",
"name": "Yank",
}
]
const map = fakeData
.map(item => new Date(item.createdAt).getDate())
.map(item => item)
.reduce((prev, cur) => { prev[cur] = (prev[cur] || 0) + 1; return prev; }, {});
const arrayOfObj = Object.entries(map).map((e) => ({ [e[0]]: e[1] }));
const newArrayWithValueCero = arrayNumberdays.map((item) => ({ [item]: 0 }))
newArrayWithValueCero.map((items, key) => {
const keysOfItems = Object.keys(items)[0] // 1,2,3,4,5,6,7...
const keysOfArrayOfObj = Object.keys(arrayOfObj[key] === undefined ? { "-": "0" } : arrayOfObj[key])[0] // 1,2,3, ------....
return keysOfItems === keysOfArrayOfObj
? { [Object.keys(items)[0]]: Object.values(arrayOfObj[key] === undefined ? { [[Object.keys(items)[0]][0]]: "0" } : arrayOfObj[key])[0] }
: items
})