#javascript #json
#javascript #json
Вопрос:
У меня есть два объекта JSON, и я хочу объединить их в один объект JSON. Кроме того, я хочу, чтобы они были добавлены в качестве подуровней в выходной объект JSON.
Объект JSON 1:
{
Title: '7500',
Year: '2019',
Rated: 'R',
Released: '18 Jun 2020',
Runtime: '93 min',
Genre: 'Action, Drama, Thriller'
}
Объект JSON 2:
{
Title: 'Deadpool',
Year: '2016',
Rated: 'R',
Released: '12 Feb 2016',
Runtime: '108 min',
Genre: 'Action, Adventure, Comedy, Sci-Fi'
}
Желаемый результат:
responses: {
7500: {
Title: '7500',
Year: '2019',
Rated: 'R',
Released: '18 Jun 2020',
Runtime: '93 min',
Genre: 'Action, Drama, Thriller'
},
Deadpool: {
Title: 'Deadpool',
Year: '2016',
Rated: 'R',
Released: '12 Feb 2016',
Runtime: '108 min',
Genre: 'Action, Adventure, Comedy, Sci-Fi'
}
}
Как я могу это сделать?
Ответ №1:
Вы можете добавить свои два объекта в массив, а затем использовать .map()
для сопоставления каждого объекта с массивом формы [object.Title, object]
. Используя этот новый массив, вы можете использовать Object.fromEntries()
его для преобразования в объект. Помещая свои объекты в массив, вы можете расширить его для нескольких объектов movie:
const movies = [{ Title: '7500', Year: '2019', Rated: 'R', Released: '18 Jun 2020', Runtime: '93 min', Genre: 'Action, Drama, Thriller' }, { Title: 'Deadpool', Year: '2016', Rated: 'R', Released: '12 Feb 2016', Runtime: '108 min', Genre: 'Action, Adventure, Comedy, Sci-Fi' }];
const result = Object.fromEntries(movies.map(obj => [obj.Title, obj]));
console.log(result);
В качестве примечания, не существует такого понятия, как объект JSON.
Комментарии:
1. Что ж, это удивительно.
Ответ №2:
Вы могли бы использовать динамическое имя свойства (вычисляемое имя свойства)
const obj1 = {
Title: "7500",
Year: "2019",
Rated: "R",
Released: "18 Jun 2020",
Runtime: "93 min",
Genre: "Action, Drama, Thriller",
};
const obj2 = {
Title: "Deadpool",
Year: "2016",
Rated: "R",
Released: "12 Feb 2016",
Runtime: "108 min",
Genre: "Action, Adventure, Comedy, Sci-Fi",
};
const obj = {
[obj1.Title]: obj1,
[obj2.Title]: obj2,
};
console.log(obj);