Мне нужно найти наименьшее количество путем итерации дочернего массива и разделить как несколько массивов на основе родительского массива в angular - PullRequest
0 голосов
/ 19 апреля 2020
myData = [
  {
    id: 'N5604-E',
    areas: [
      {
        test_per_week: 154,
        test_per_day: 22,
      },
      {
        test_per_week: 154,
        test_per_day: 52,
      },
      {
        test_per_week: 154,
        test_per_day: 32,
      },
    ],
  },
  {
    id: 'RSP4-E',
    areas: [
      {
        test_per_week: 154,
        test_per_day: 12,
      },
      {
        test_per_week: 154,
        test_per_day: 29,
      },
    ],
  },
];

Мне нужно получить минимум test_per_week в каждой области и мне нужно хранить значения в массиве на основе идентификаторов

. Я пытался использовать итерацию для l oop и для каждого l * 1011. *:

for (let i = 0; i < this.data.length; i++) {
  this.chartProducts.push(this.data[i].id);
  this.capacity[i].areas.forEach((element) => {
    this.myData.push(element.test_per_day);
  });
}

Я остановился на том, как рассчитать минимальное число test_per_day для всех областей в одном ID.

Ответы [ 2 ]

1 голос
/ 19 апреля 2020

Мы использовали метод map для итерации и возврата нового array и сокращения для сравнения значений между ними и, наконец, с помощью математического метода min для получения минимального числа.

const result = myData.map((item) => {
  const test_per_day = item.areas.reduce(
    (max, val) => Math.min(max, val.test_per_day),
    item.areas[0].test_per_day
  );

  return { id: item.id, test_per_day };
});

Результат:

[
  {
    "id": "N5604-E",
    "test_per_day": 22
  },
  {
    "id": "RSP4-E",
    "test_per_day": 12
  }
]
1 голос
/ 19 апреля 2020

Это можно сделать, используя Array.map() в сочетании с Math.min() следующим образом:

const result = myData.map(o => ({
  id: o.id,
  min_per_day: Math.min(...o.areas.map(a => a.test_per_day))
}));

Пожалуйста, посмотрите на фрагмент кода работоспособности ниже .

const myData = [{
    "id": "N5604-E",
    "areas": [
      { "test_per_week": 154, "test_per_day": 22 },
      { "test_per_week": 154, "test_per_day": 52 },
      { "test_per_week": 154, "test_per_day": 32 }
    ]
  },
  {
    "id": "RSP4-E",
    "areas": [
      { "test_per_week": 154, "test_per_day": 12 },
      { "test_per_week": 154, "test_per_day": 29 }
    ]
  }
];

const result = myData.map(o => ({
  id: o.id,
  min_per_day: Math.min(...o.areas.map(a => a.test_per_day))
}));
console.log(result);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...