Сравнивая два объекта массива данных и объединить как один объект в массив в JavaScript? - PullRequest
0 голосов
/ 17 сентября 2018

мои массивы:

const create = [{"month":"Jan","createCount":"4"},{"month":"Feb","createCount":"5"}];

const close = [{"month":"Jan","closeCount":"3"},{"month":"Feb","closeCount":"5"}];

Мне нужно объединить объекты массивов для сравнения поля month .

Я хочу получить результат какэто ...

const data = [{"month":"Jan","createCount":"4","closeCount":"3"},{"month":"Feb","createCount":"5","closeCount":"5"}];

Я пробовал этот код:

const data = [...create, ...close];

но это как объединение только двух данных массива.

пожалуйстадай мне какое-нибудь решение!

Ответы [ 4 ]

0 голосов
/ 17 сентября 2018

Здесь я добавил образец. Пожалуйста, обратитесь к коду

const create = [{"month":"Jan","createCount":"4"},{"month":"Feb","createCount":"5"}];
const close = [{"month":"Jan","closeCount":"3"},{"month":"Feb","closeCount":"5"}];
console.log(create.length);

    for(var data = 0 ; data < create.length ; data++){ 
    var datas = []
    if(create[data].month == close[data].month){ 
        datas=Object.assign(create[data],close[data]);console.log(create[data]);
    }
}
0 голосов
/ 17 сентября 2018

Вы можете использовать .map() и Object.assign() методы:

const create = [{"month":"Jan","createCount":"4"}, {"month":"Feb","createCount":"5"}],
      close = [{"month":"Jan","closeCount":"3"}, {"month":"Feb","closeCount":"5"}];

const result = create.map(
    o => Object.assign({}, o, close.find(({month}) => month === o.month))
);

console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }
0 голосов
/ 17 сентября 2018

просто использовать для в

const create = [{ "month": "Jan", "createCount": "4" }, { "month": "Feb", "createCount": "5" }];
const close = [{ "month": "Jan", "closeCount": "3" }, { "month": "Feb", "closeCount": "5" }];
for (var i in create) {
    var item = create[i];
    item.closeCount = close.find(x => x.month == item.month).closeCount;
}
console.log(create);
0 голосов
/ 17 сентября 2018

Предполагая, что в массиве create не будет такой записи, которой нет в массиве close и наоборот

Попробуйте использовать Array.reduce , * 1007.* Array.map и Object.assign

const create = [{"month":"Jan","createCount":"4"},{"month":"Feb","createCount":"5"}];

const close = [{"month":"Jan","closeCount":"3"},{"month":"Feb","closeCount":"5"}];

// Create an object with key as month and createCount as value
let obj = create.reduce((a, o) => Object.assign(a, {[o.month]: o.createCount}), {});

// Iterate over close array and add createCount from obj
let result = close.map(o => ({...o, createCount : obj[o.month]}));
console.log(result);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...