Как добавить два массива данных в Ionic 2

Я начинающий в Ionic 2. Я хочу добавить к элементу массива в соответствии с их положением. Например: у меня есть 2 массива.

  1. : [этикетка Lillium, гербер, гербер,Lillium,Rose,Rose]

  2. Данные: [10, 20, 10, 30, 20,10]

Теперь я хочу удалить избыточность из меток [] и добавить их значения из данных []

Мой окончательный массив должен быть

этикетки: [Лилиум, Гербера, Роза]

данные: [40,30,30]

Я извлек данные из Json этого типа:

 var qp = []
        for (var i of res.data) {
             qp.push(i.quantity_produced);
        console.log(res.data);
         console.log(qp);

        var name = []
          for (var i of res.data) {
             name.push(i.product);
              var s= [new Set(name)];
        console.log(res.data);
        console.log(name);

1 ответ

Решение

Попробуй это:

let labels = ['Lillium', 'Gerbera', 'Gerbera', 'Lillium', 'Rose', 'Rose'];
let Data = [10, 20, 10, 30, 20, 10];

//for each unique label....
let result = [...new Set(labels)]

//... get each occurence index ...
.map(value => labels.reduce((curr, next, index) => {
  if (next == value)
    curr.push(index);
  return curr;
}, []))

//... and reducing each array of indexes using the Data array gives you the sums
.map(labelIndexes => labelIndexes.reduce((curr, next) => {
  return curr + Data[next];
}, 0));

console.log(result);

На основании вашего комментария кажется, что все можно сделать намного проще

let data = [{product: 'Lillium',quantity_produced: 10}, {product: 'Gerbera',quantity_produced: 20},{product: 'Gerbera',quantity_produced: 10}, {product: 'Lillium',quantity_produced: 30}, {product: 'Rose',quantity_produced: 20}, {product: 'Rose',quantity_produced: 10}];

let result = data.reduce((curr, next) => {
  curr[next.product] = (curr[next.product] || 0) + next.quantity_produced;
  return curr;
}, {});

console.log(result);

Другие вопросы по тегам