Я хочу взять максимум и минимум определенных значений во вложенном массиве.
Примером может быть вложенный массив в формате [широта, долгота].
Вложенный массив, который я хочу ввести, - [[40, 50], [50, 60], [60, 70]].
Максимальная долгота должна составлять 70 и мин. Долгота должна составлять 50.
Максимальная широта должна выдавать 60 и мин. Ширина должна выдавать 40.
Средняя долгота должна составлять 60, а средняя широта должна составлять 50.
Теперь мой вопрос: как взять значения max и min значений долготы и широты во вложенном массиве и найти среднее значение отдельно с помощью JavaScript?
const latlon = [[40, 50], [50, 60], [60, 70]]
const lat = latlon.map(a => a[0])
const lon = latlon.map(a => a[1])
const maxLat = Math.max(...lat)
const minLat = Math.min(...lat)
const avgLat = (lat.reduce((acc,cur) => acc + cur, 0))/lat.length
console.log(maxLat, minLat, avgLat)
const maxLon = Math.max(...lon)
const minLon = Math.min(...lon)
const avgLon = (lon.reduce((acc,cur) => acc + cur, 0))/lon.length
console.log(maxLon, minLon, avgLon)
Что-то вроде этого:
var numbers = [[1, 5], [2, 3], [4,10]];
// max for o[0];
Math.max.apply(Math, numbers.map(function(o) { return o[0]; }));
4
// max for o[1]
Math.max.apply(Math, numbers.map(function(o) { return o[1]; }));
10
// min for o[0]
Math.min.apply(Math, numbers.map(function(o) { return o[0]; }));
1
// min for o[1]
Math.min.apply(Math, numbers.map(function(o) { return o[1]; }));
3
Надеюсь, поможет
Используя метод Array#reduce
, вы можете достичь этого "функциональным" способом.
Каждый метод начинает сокращение с начального значения, взятого из входного массива, и затем выполняет итерацию через массив, который ищет и обновляет текущий минимум или максимум в массиве по мере его поступления.
Следуя этому подходу, "средние" методы реализуются путем составления как "минимального", так и "максимального" методов и усреднения возвращаемого числового результата:
var array = [[40, 50], [50, 60], [60, 70]]
const findMinLatitude = (arr) => {
return arr.reduce((min, item) => {
return Math.min(min, item[0])
}, arr[0][0])
}
const findMaxLatitude = (arr) => {
return arr.reduce((max, item) => {
return Math.max(max, item[0])
}, arr[0][0])
}
const findAvgLatitide = (arry) => {
return (findMinLatitude(arry) + findMaxLatitude(arry)) * 0.5
}
const findMinLongitude = (arr) => {
return arr.reduce((min, item) => {
return Math.min(min, item[1])
}, arr[0][1])
}
const findMaxLongitude = (arr) => {
return arr.reduce((max, item) => {
return Math.max(max, item[1])
}, arr[0][1])
}
const findAvgLongitude = (arry) => {
return (findMinLongitude(arry) + findMaxLongitude(arry)) * 0.5
}
console.log('Min latitude', findMinLatitude(array))
console.log('Max latitude', findMaxLatitude(array))
console.log('Average latitude', findAvgLatitide(array))
console.log('Min longitude', findMinLongitude(array))
console.log('Max longitude', findMaxLongitude(array))
console.log('Average longitude', findAvgLongitude(array))