2016-08-10 5 views
0

Это будет действительно вопрос, но я не могу разобраться в жизни меня. Я даже не уверен, какую функцию я мог бы использовать.Есть ли способ в Lodash объединить дубликаты?

Рассмотрим следующий пример:

enter image description here

Как вы можете видеть, у нас есть массив объектов, каждый объект имеет ключа (дата) и значение массива.

Как мы видим, есть два объекта с одинаковой датой. Как объединить эти два объекта вместе, так что у меня есть одна дата (10 августа) с массивом из двух объектов вместо двух объектов с массивом из одного объекта.

Я думаю, что это будет метод массива (что-то вроде фильтра?) С методом сбора?

Я не уверен. Помощь?

ответ

1
//Solution starts here: 

var results = []; 
var temps = {}; 

//Iterate through the dates to find uniq keys(date). 
_.each(dates, function(date) { 
    //Store uniq keys(date) and it's value. 
    _.each(date, function(value, key) { 
    if (temps.hasOwnProperty(key)) { 
     temps[key] = temps[key].concat(value); 
    } else { 
     temps[key] = value; 
    } 
    }); 
}); 

//Tranform the object into an array. 
_.map(temps, function(value, key) { 
    var item = {}; 
    item[key] = value; 
    results.push(item); 
}); 
//results is your answer 
Смежные вопросы