2016-05-27 4 views
0

Существует массив объектов JS. Объект имеет следующие атрибуты:Использование lodash для группировки данных

  • год
  • имя
  • зарплата

Массив сортируется (год + имя). Дано то, что в атрибуте «name» имеется только 2 разных значения.

Цель состоит в том, чтобы создать другой массив JS, отсортированный по годам, содержащие объекты с 2-мя атрибуты только:

  • года
  • 100 * (зарплата имени # 1)/(заработную плату для имени # 2)

Если одна из зарплат не существует или 0 за данный год, то оболочка объекта не будет создана для этого года.

Я пытался использовать _lodash (я не уверен, что это правильный инструмент для этого):

var groupByYear =_.groupby(myArray, function(element){ 
    return element.year; 
}; 

return _.map(groupByYear, function(el){ 
    if (el.size() == 2 and el[0].salary > 0 and el[1].salary > 0) 
    return { "year": el[0].year , "percent": 100 * el[0].salary/el[1].salary }; 
} 

, но я не уверен, что это правильный подход; например, создается промежуточная матрица с именем groupByYear.

+1

Было бы легче для нас, чтобы помочь вам, если вы предоставите выборки ввода и вывода данных выборки. – ryeballar

+0

Пожалуйста, введите полный пример ввода и полный пример вывода –

ответ

0

Попробуйте это может быть:

_.chain(arr) 
    .groupBy('year') 
    .map((salary, year) => [year, 100 * salary[0].salary/salary[1].salary]) 
    .sortBy('0') 
    .value() 
Смежные вопросы