#javascript #react-native #loops
#javascript #реагировать — родной #циклы
Вопрос:
У меня есть этот массив объектов
[{…}]
0: {name: "Test", _id: "601844119611f807bc14fe80", locations: Array(148), userId: "600cba4906ced9443c3d8419", __v: 0}
Внутри него у меня есть местоположения свойств, другой массив объектов, которые имеют такую структуру :
0:
locations: Array(148)
[0 … 99]
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
— не совсем понятно, когда деструктурирование легче читать, а когда нет.