Как объединить эти две карты в одну - PullRequest
0 голосов
/ 12 марта 2020

Я пытаюсь объединить эти две карты в одну. Я пытался использовать concat, но это не работает. а также пробовал var m = {... v1, ... v2}; но это тоже не работает. Так что любой знает, пожалуйста, помогите мне.

И это две мои карты:

var v1 = {Sdata: [{id: '1', name: 'Mark'},{id: '3', name: 'venu'}]};
var v2 = {Sdata: [{id: '2', name: 'Julee'},{id: '4', name: 'gopi'}]};

И здесь я исключаю вывод, как показано ниже. Если ключи совпадают, они должны сливаться следующим образом

result: Sdata: [{id: '1', name: 'Mark'},{id: '3', name: 'venu'}, {id: '2', name: 'Julee'},{id: '4', name: 'gopi'}]};

Ответы [ 5 ]

2 голосов
/ 12 марта 2020

Просто получите все элементы в одном массиве с помощью динамического c подхода.

var v1 = { Sdata: [{ id: '1', name: 'Mark' }, { id: '3', name: 'venu' }] },
    v2 = { Sdata: [{ id: '2', name: 'Julee' }, { id: '4', name: 'gopi' }] },
    merged = [v1, v2].reduce((a, b) => {
        Object.entries(b).forEach(([k, v]) => {
            if (!a[k]) a[k] = [];
            a[k].push(...b[k]);
        });
        return a;
    }, {});

console.log(merged);
1 голос
/ 12 марта 2020
var v1 = {Sdata: [{id: '1', name: 'Mark'},{id: '3', name: 'venu'}]};
var v2 = {Sdata: [{id: '2', name: 'Julee'},{id: '4', name: 'gopi'}]};

var res = {Sdata: v1['Sdata'].concat(v2['Sdata'])};
console.log(res)
1 голос
/ 12 марта 2020
const result = {
  Sdata: [...new Set(Object.values(v1).concat(Object.values(v2)))]
};

Набор используется только для удаления дубликатов из массива.

0 голосов
/ 12 марта 2020

Попробуйте

{ Sdata: [...v1.Sdata, ...v2.Sdata] }

Самое лучшее в операторе распространения - это простота получения требуемого результата без изменения реальных данных.

0 голосов
/ 12 марта 2020

Вы можете попробовать это:

let v1 = {Sdata: [{id: '1', name: 'Mark'},{id: '3', name: 'venu'}]};
let v2 = {Sdata: [{id: '2', name: 'Julee'},{id: '4', name: 'gopi'}]};

let entries = Object.entries(v1).concat(Object.entries(v2));
let result = entries.reduce((acc, currentValue) => {
    if(!acc.hasOwnProperty(currentValue[0])){
        acc[currentValue[0]] = [];
    }
    acc[currentValue[0]].push(...currentValue[1]);
    return acc;
}, {});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...