Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

155
Visualizações
Cómo obtener la propiedad de una matriz usando filtro

Estoy tratando de obtener la coincidencia de la siguiente matriz comparando las coordenadas del navegador con las coordenadas en la matriz, pero obtengo un valor 'indefinido' cuando llamo a la const 'matchgeosucursal' incluso si fuerzo la condición del filtro para hacer coincidir, el objetivo de este código es obtener la URL del escenario de coincidencia, creo que estoy usando mal la función de filtro.

 //Request permissions $( document ).ready(function getLocation() { if (navigator.geolocation) { navigator.geolocation.getCurrentPosition(showPosition); } else { console.log ("Geolocation is not supported by this browser."); } //Filter and gets match url function showPosition(position) { console.log("Latitude: " + position.coords.latitude) console.log("Longitude: " + position.coords.longitude); var navlat = position.coords.latitude; //Browser lat var navlon = position.coords.longitude; // Browser lon // Array var sucursales = [ {lat: 21.924089, lon: -102.293378, url: "https://shorturl.at/test1"}, {lat: 21.859964, lon: -102.298034, url: "https://shorturl.at/test2"}, {lat: 32.45569, lon: -116.836181, url: "https://shorturl.at/test3"}, {lat: 24.114868, lon: -110.340389, url: "https://shorturl.at/test4"}, {lat: 21.0335386, lon: -89.559187, url: "https://shorturl.at/test5"}]; //Match result const matchgeosucursal = sucursales.filter( sucursales => sucursales.lat === navlat && sucursales.lon === navlon); console.log('Match> ' + matchgeosucursal); } });
about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

Funciona bien, lo único es que console.log no imprime los objetos correctamente. console.table en mi prueba y todo se ve bien:

Nota: hice de la position una constante porque no puedo extraer las coordenadas de un documento como lo ha hecho usted. Pero funcionará siempre que tenga los valores correctos para position.coords.latitude y ...longitude

 const position = { coords: { latitude: 21.0335386, longitude: -89.559187, } } function showPosition(position) { console.log("Latitude: " + position.coords.latitude) console.log("Longitude: " + position.coords.longitude); var navlat = position.coords.latitude; //Browser lat var navlon = position.coords.longitude; // Browser lon // Array var sucursales = [ {lat: 21.924089, lon: -102.293378, url: "https://shorturl.at/test1"}, {lat: 21.859964, lon: -102.298034, url: "https://shorturl.at/test2"}, {lat: 32.45569, lon: -116.836181, url: "https://shorturl.at/test3"}, {lat: 24.114868, lon: -110.340389, url: "https://shorturl.at/test4"}, {lat: 21.0335386, lon: -89.559187, url: "https://shorturl.at/test5"}]; //Match result const matchgeosucursal = sucursales.filter( sucursales => sucursales.lat === navlat && sucursales.lon === navlon); console.log("Match:") console.table( matchgeosucursal); } showPosition(position)
about 4 years ago · Juan Pablo Isaza Relatório

0

Es probable que esté obteniendo un resultado indefinido porque su filtro está buscando una coincidencia exacta para la latitud y la longitud, y la ubicación geográfica del usuario no es lo suficientemente precisa como para identificar la latitud y la longitud exactas por las que está filtrando.

Para obtener una coincidencia, puede verificar si la latitud y la longitud del usuario están dentro de un rango, así:

 const matchgeosucursal = sucursales.filter( sucursales => sucursales.lat >= (navlat -.005) && sucursales.lat <= (navlat +.005) && sucursales.lon >= (navlon -.005) && sucursales.lon <= (navlon +.005));

Eso le daría precisión dentro de aproximadamente media milla. Obviamente, puede ajustar la amplitud de un rango que le gustaría usar, según sea necesario para su caso de uso.

 //Request permissions $( document ).ready(function getLocation() { if (navigator.geolocation) { navigator.geolocation.getCurrentPosition(showPosition); } else { console.log ("Geolocation is not supported by this browser."); } //Filter and gets match url function showPosition(position) { console.log("Latitude: " + position.coords.latitude) console.log("Longitude: " + position.coords.longitude); var navlat = position.coords.latitude; //Browser lat var navlon = position.coords.longitude; // Browser lon // Array var sucursales = [ {lat: 21.924089, lon: -102.293378, url: "https://shorturl.at/test1"}, {lat: 21.859964, lon: -102.298034, url: "https://shorturl.at/test2"}, {lat: 32.45569, lon: -116.836181, url: "https://shorturl.at/test3"}, {lat: 24.114868, lon: -110.340389, url: "https://shorturl.at/test4"}, {lat: 21.0335386, lon: -89.559187, url: "https://shorturl.at/test5"}]; //Match result const matchgeosucursal = sucursales.filter( sucursales => sucursales.lat >= (navlat -.005) && sucursales.lat <= (navlat +.005) && sucursales.lon >= (navlon -.005) && sucursales.lon <= (navlon +.005)); console.log('Match > \nlat: ' + matchgeosucursal[0].lat +"\nlon: " + matchgeosucursal[0].lon + "\nurl: " + matchgeosucursal[0].url); } });
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda