2016-11-09 2 views
1

Может ли кто-нибудь помочь мне с логикой о том, как мне получить максимальные/минимальные координаты с массивом coodinates? То, что я пытаюсь получить, - это самое длинное расстояние, которое он может получить из такого массива координат. Ex.Как получить максимальные/минимальные границы с массивом координат

 
    var coordinates = [{ 
     lat: -231, 
     lng: 223l 
    }, { 
     lat: 43, 
     lng: -4323 
    }, { 
     lat: 42312, 
     lng: -231 
    }, { 
     lat: 435345, 
     lng: -6563 
    }] 

    // some filter calculation here... 


    // This is what I need 
    var min_coords = { lat, lng } 
    var max_coords = { lat, lng } 

ответ

2

Вы можете создавать массивы значений, а затем использовать Math.max и Math.min, чтобы получить самые высокие и самые низкие значения

var coordinates = [{ 
 
    lat: -231, 
 
    lng: 223 
 
}, { 
 
    lat: 43, 
 
    lng: -4323 
 
}, { 
 
    lat: 42312, 
 
    lng: -231 
 
}, { 
 
    lat: 435345, 
 
    lng: -6563 
 
}] 
 

 
var lat = coordinates.map(function(p) {return p.lat}); 
 
var lng = coordinates.map(function(p) {return p.lng}); 
 

 
var min_coords = { 
 
    lat : Math.min.apply(null, lat), 
 
    lng : Math.min.apply(null, lng) 
 
} 
 
var max_coords = { 
 
    lat : Math.max.apply(null, lat), 
 
    lng : Math.max.apply(null, lng) 
 
} 
 

 
console.log(min_coords); 
 
console.log(max_coords);

+0

Ничего себе, отлично. Я думаю, что это работает ... – olanchuy

1

Раствор с помощью Array.prototype.reduce для фильтрации через массив для минимальных и максимальных значений - демонстрационная версия ниже:

var coordinates=[{lat:-231,lng:223},{lat:43,lng:-4323},{lat:42312,lng:-231},{lat:435345,lng:-6563}]; 
 

 
var result = coordinates.reduce(function(prev,curr){ 
 
    if(curr.lat < prev.min_cords.lat) 
 
    prev.min_cords.lat = curr.lat; 
 
    if(curr.lat > prev.max_cords.lat) 
 
    prev.max_cords.lat = curr.lat; 
 
    if(curr.lng < prev.min_cords.lng) 
 
    prev.min_cords.lng = curr.lng; 
 
    if(curr.lng > prev.max_cords.lng) 
 
    prev.max_cords.lng = curr.lng; 
 
    return prev; 
 
},{min_cords:{lat:Infinity,lng:Infinity},max_cords:{lat:-Infinity,lng:-Infinity}}); 
 

 
console.log(result);
.as-console-wrapper{top:0;max-height:100%!important;}

+0

@olanchuy дайте мне знать ваши мысли об этом тоже, спасибо! – kukkuz

 Смежные вопросы

  • Нет связанных вопросов^_^