цикл в массив объекта

#javascript #react-native #loops

#javascript #реагировать — родной #циклы

Вопрос:

У меня есть этот массив объектов

 [{…}]
0: {name: "Test", _id: "601844119611f807bc14fe80", locations: Array(148), userId: "600cba4906ced9443c3d8419", __v: 0}
 

Внутри него у меня есть местоположения свойств, другой массив объектов, которые имеют такую структуру :

 0:
locations: Array(148)
[099]
0:
coords: {…}
timestamp: 1612202687000
 

Внутри него у меня есть свойство coords, простой объект, который имеет свойство speed :

 coords:
accuracy: (...)
altitude: (...)
heading: (...)
latitude: (...)
longitude: (...)
speed: 0.15368179976940155
 

То, что я хотел бы получить, было бы средним значением всех скоростей, начиная с местоположений.
Теперь я нашел решение, но оно мне не очень нравится, я хотел бы найти более чистое решение. Я прилагаю решение, которое сработало для меня, но я уверен, что есть бесконечно лучшие способы. Заранее спасибо

 const coords = track.locations.map((l) => {
    return l.coords;
  });
  

  const speed = coords.map((s) => {
    return s.speed;
  });


  const averageSpeed = speedConverter(
    speed.reduce((a, b) => a   b, 0) / speed.length
  );
 

speedConverter — моя простая функция, это не важно.

Комментарии:

1. Смотрите codereview.stackexchange.com . Кроме того, вы можете делать что-то более прямое: locations.reduce((p, { coords: { speed } }) => p speed, 0) / locations.length

2. Обратите внимание, что он также работает в более старом стиле, без причудливой деструктуризации: locations.reduce((p, c) => p c.coords.speed, 0) / locations.length — не совсем понятно, когда деструктурирование легче читать, а когда нет.