如何使用JavaScript获取嵌套数组中特定值的最大值和最小值?

时间:2018-10-29 00:22:04

标签: javascript arrays

我想在嵌套数组中使用特定值的最大值和最小值。

例如,嵌套数组的格式为[纬度,经度]。

我要输入的嵌套数组是[[40,50],[50,60],[60,70]]。

最大经度应输出70,最小经度应输出50。

最大纬度应输出60,最小纬度应输出40。

平均经度应输出60,平均纬度应输出50。

现在我的问题是如何获取嵌套数组中经度和纬度值的最大值和最小值,并使用JavaScript分别找到平均值?

3 个答案:

答案 0 :(得分:0)

那这样的事情呢?

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

希望有帮助

答案 1 :(得分:0)

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)

答案 2 :(得分:0)

使用Array#reduce方法,您可以通过“功能性”方式实现这一目标。

每种方法都以从输入数组中获取的初始值开始减少,然后迭代遍历数组以查找并更新数组中的当前最小值或最大值。

在此方法之后,通过组合“ minimum”和“ maximum”方法,并对它们返回的数值结果求平均值,来实现“ average”方法:

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))