Cette chaîne séparée par des espaces:

const polygon = "42.44492,75.637764 42.445503,75.64534 42.433681,75.6604"

..doit être converti en objets composés de tableaux:

const polygon = [
    { lat: 42.44492, lng: 75.637764 },
    { lat: 42.445503, lng: 75.64534 },
    { lat: 42.433681, lng: 75.6604 }
]

Quelle est la manière la plus simple (belle) d'y parvenir avec JavaScript? Y a-t-il une belle doublure pour cela? La chaîne initiale peut être constituée de n'importe quelle paire de coordonnées de montant.

1
ikenator 2 juin 2020 à 13:41

3 réponses

Meilleure réponse

Vous pouvez utiliser la division pour obtenir chaque ligne, puis mapper chaque ligne à diviser par une virgule:

const polygon = "42.44492,75.637764 42.445503,75.64534 42.433681,75.6604";
const formated = polygon.split(' ').map((item) => {
  const [ lat, lng ] = item.split(',');
  return { lat, lng };
});
console.log(formated);

Si vous souhaitez analyser les valeurs, vous devez utiliser let à la place:

const polygon = "42.44492,75.637764 42.445503,75.64534 42.433681,75.6604";
const formated = polygon.split(' ').map((item) => {
  let [ lat, lng ] = item.split(',');
  lat = parseFloat(lat); // or any other transformation you wish to make
  lng = parseFloat(lng);
  return { lat, lng };
});
console.log(formated);
4
Álvaro Tihanyi 2 juin 2020 à 11:25

Utiliser la fonction de carte avec la fonction de division

const polygon = "42.44492,75.637764 42.445503,75.64534 42.433681,75.6604";

const res = polygon.split(' ').map(s => {
  const [lat, lng] = s.split(',');
  return { lat: Number(lat), lng: Number(lng) };
});

console.log(res);
1
Yousaf 2 juin 2020 à 10:47
const polygon = "42.44492,75.637764 42.445503,75.64534 42.433681,75.6604"
const polygonsArr = polygon.split(' ')
const result = []
polygonsArr.map(item => {
    let a = item.split(',');
    result.push({"lat": a[0], "lng": a[1]})
})
console.log(result)
0
Nick 2 juin 2020 à 10:57