Глубокое слияние двух объектов JSON ES6 - PullRequest
1 голос
/ 30 октября 2019

У меня есть два объекта json, в которые вложен один. Например:

data1 : [{"name": "abc", "age": 26, "title": "xyz", "address": {"street":"yyy","city":"ttt","country":"kkk"}]
date2: [{"color": "blue", "sqad": "jkl", "priority": "rst", "division": "opq", "range": 456}]

Я попытался объединить их, используя оператор распространения, а также object.assign, но не получил ожидаемый результат.

Мне нужно объединить его, как показано ниже:

[{"name": "abc", "age": 26, "title": "xyz", "address": {"street":"yyy","city":"ttt","country":"kkk"}, "color": "blue", "sqad": "jkl", "priority": "rst", "division": "opq", "range": 456 }]

Ответы [ 2 ]

1 голос
/ 30 октября 2019

Вы можете использовать что-то вроде этого:

const data1 = [{ name: 'abc', age: 26, title: 'xyz', address: { street: 'yyy', city: 'ttt', country: 'kkk' } }]
const data2 = [{ color: 'blue', sqad: 'jkl', priority: 'rst', division: 'opq', range: 456 }]

var data3 = [Object.assign( {}, data1[0], data2[0] )];

Надеюсь, что это отвечает на ваш запрос

1 голос
/ 30 октября 2019

Вы можете использовать Синтаксис распространения :

const data1 = [{ name: 'abc', age: 26, title: 'xyz', address: { street: 'yyy', city: 'ttt', country: 'kkk' } }]
const date2 = [{ color: 'blue', sqad: 'jkl', priority: 'rst', division: 'opq', range: 456 }]

const result = [{...data1[0], ...date2[0]}]

console.log(result)
.as-console-wrapper { max-height: 100% !important; top: 0; }

Если у вас есть n объекты в date1 и date2, вы можете получить result, используя Синтаксис Spread вместес Array.prototype.map ()

const data1 = [{ name: 'abc', age: 26, title: 'xyz', address: { street: 'yyy', city: 'ttt', country: 'kkk' } }, { name: 'def', age: 26, title: 'xyz', address: { street: 'yyy', city: 'ttt', country: 'kkk' } }]
const date2 = [{ color: 'blue', sqad: 'jkl', priority: 'rst', division: 'opq', range: 456 }, { color: 'green', sqad: 'jkl', priority: 'rst', division: 'opq', range: 456 }]

const result = data1.map((d, i) => ({...data1[i], ...date2[i]}))

console.log(result)
.as-console-wrapper { max-height: 100% !important; top: 0; }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...