#javascript #json #merge
#javascript #json #слияние
Вопрос:
Как объединить эти объекты JSON с помощью JavaScript?
Если один ключ отсутствует, поместите null на место значения
Конвертировать из:
[{"dateData": "2019-04-08", "geriatricDepressionScaleTotalScoreData": "5"},
{"dateData": "2019-04-09", "geriatricDepressionScaleTotalScoreData": "2"}]
[{"dateData": "2019-04-08", "digitSpanTotalScoreData": "10"},
{"dateData": "2019-04-09", "digitSpanTotalScoreData": "12"}]
[{"dateData": "2019-04-09", "immediateRecallStoryAData": "4",
"delayedRecallStoryAData": "6"}]
[{"dateData": "2019-04-08", "phonologicalTotalData": "30"},
{"dateData": "2019-04-09", "phonologicalTotalData": "4"}]
Преобразовать в:
[{"dateData": "2019-04-08", "geriatricDepressionScaleTotalScoreData": "5",
"digitSpanTotalScoreData": "10", "immediateRecallStoryAData": null,
"delayedRecallStoryAData": null, "phonologicalTotalData": "30"},
{"dateData": "2019-04-09", "geriatricDepressionScaleTotalScoreData": "2",
"digitSpanTotalScoreData": "12", "immediateRecallStoryAData": 4,
"delayedRecallStoryAData": 6, "phonologicalTotalData": "4"}]
Комментарии:
1. Вы можете использовать Object.assign(…yourarray)
2. Вам нужно быть более конкретным с тем, что вы хотите. Почему
geriatricDepressionScaleTotalScoreData
получает значение5
, а не2
? Кроме того, что вы пробовали?3. Из-за того, как он был отформатирован, было трудно следовать. Есть две отдельные даты, которые получают
geriatricDepressionScaleTotalScoreData
.
Ответ №1:
Вы можете сделать это с помощью оператора распространения, например
var myArr = [{ "dateData": "2019-04-08", "geriatricDepressionScaleTotalScoreData": "5" }, { "dateData": "2019-04-09", "geriatricDepressionScaleTotalScoreData": "2" }];
myArr.push(...[{ "dateData": "2019-04-08", "digitSpanTotalScoreData": "10" }, { "dateData": "2019-04-09", "digitSpanTotalScoreData": "12" }]);
myArr.push(...[{ "dateData": "2019-04-09", "immediateRecallStoryAData": "4", "delayedRecallStoryAData": "6" }]);
myArr.push(...[{ "dateData": "2019-04-08", "phonologicalTotalData": "30" }, { "dateData": "2019-04-09", "phonologicalTotalData": "4" }]);
var final = JSON.stringify(myArr);
console.log(final);
Ответ №2:
Вы можете использовать .map()
функцию Array для переформатирования существующего массива объектов в новый массив с недавно переформатированными объектами.
const arr = [{"dateData": "2019-04-08", "geriatricDepressionScaleTotalScoreData": "5"},
{"dateData": "2019-04-09", "geriatricDepressionScaleTotalScoreData": "2"}];
const result = arr.map((el) => {
const obj = {};
obj['dateData'] = el.hasOwnProperty('dateData')?el['dateData'] :null;
obj['geriatricDepressionScaleTotalScoreData'] = el.hasOwnProperty('geriatricDepressionScaleTotalScoreData')?el['geriatricDepressionScaleTotalScoreData'] :null;
obj['digitSpanTotalScoreData'] = el.hasOwnProperty('digitSpanTotalScoreData')?el['digitSpanTotalScoreData'] :null;
obj['immediateRecallStoryAData'] = el.hasOwnProperty('immediateRecallStoryAData')?el['immediateRecallStoryAData'] :null;
obj['delayedRecallStoryAData'] = el.hasOwnProperty('delayedRecallStoryAData')?el['delayedRecallStoryAData'] :null;
obj['phonologicalTotalData'] = el.hasOwnProperty('phonologicalTotalData')?el['phonologicalTotalData'] :null;
return obj;
});