我有一個表格,用戶輸入他們的城市,然后回傳我的客戶位于 30 英里半徑內的所有城市。我現在試圖從這些城市中找到最近的城市,并只回傳一個同時包含城市名稱和距離(以米為單位)的結果。
我有一個 for 回圈來處理我的結果:
for (var i = 0; i < origins.length; i ) {
var results = response.rows[i].elements;
//console.log(response);
for (var j = 0; j < results.length; j ) {
// If distance is less than 30 miles (48280 metres)
if(results[j].distance.value < 48280) {
var closestCitiesDist = results[j].distance.value
var closestCitiesName = origins[i]
var closestCities = {"cityName" : closestCitiesName, "cityDistance" : closestCitiesDist}
console.log(closestCities);
}
}
}
現在為每個結果回傳一個陣列,包含 cityName 和 cityDistance 變數。在這些陣列中的每一個中,我想找到一個最近的城市(cityDistance 最小的陣列),并且能夠輸出“城市 xx 是最近的(xxx 米遠)”
uj5u.com熱心網友回復:
你可以使用Array#sort它具有的時間復雜度O(n log n)或代替你可以做一個向后傳球的冒泡排序中O(n),帶來最小的城市到陣列的前端。
const object = [
{ cityName: 'Vancouver', cityDistance: 3 },
{ cityName: 'Paris', cityDistance: 4 },
{ cityName: 'London', cityDistance: 1 },
];
for (let i = object.length - 1; i > 0; i--) {
if (object[i].cityDistance < object[i - 1].cityDistance) {
temp = object[i - 1];
object[i - 1] = object[i];
object[i] = temp;
}
}
console.log(
`City ${object[0].cityName} is the closest (${object[0].cityDistance} metres away)`
);
uj5u.com熱心網友回復:
您Array.prototype.sort()在一組物件上使用,并根據需要對其進行排序
參考資料:Array.prototype.sort
這里0索引處的元素將具有 smallesvalue屬性
const object = [{ name: 'test', value: 3}, { name: 'test2', value: 1}];
const sorted = object.sort((a, b) => a.value - b.value);
console.log(sorted);
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/342707.html
標籤:javascript 数组 循环
