我找到了关于如何对数组进行排序的各种示例,但是没有一个示例显示如何使用数组。
我正在使用谷歌距离矩阵从一个原点检索多个目的地的距离数据。我可以输出目的地信息而不是问题:
$.each(response.rows[0].elements, function(x, y) {
var distance = response.rows[0].elements[x].distance;
var distance_value = distance.value;
var distance_text = distance.text;
var miles = distance_text.substring(0, distance_text.length -3);
var milesInt = parseInt(miles);
$('#result').append(destination + " - " + miles + "<br>" );
console.log(milesInt);
});
我将英里的字符串转换为int,因为我认为它更容易排序,但它在循环中。
这里是从每个位置的api返回的数据的示例(下面有2个位置,我删除了地址)
{
"rows": [
{
"elements": [
{
"distance": {
"text": "328 mi",
"value": 527479
},
"duration": {
"text": "4 hours 48 mins",
"value": 17299
},
"status": "OK"
},
{
"distance": {
"text": "327 mi",
"value": 525717
},
"duration": {
"text": "4 hours 54 mins",
"value": 17624
},
"status": "OK"
}
]
}
],
"originAddresses": [
"Texas, USA"
],
]
}
我可以按循环中的变量排序吗?
答案 0 :(得分:-1)
distances = rows[0].elements.map( function(item) {
return item.distance.value;
}
distances.sort()
sorted_elements = [];
rows[0].elements.forEach( function(item, key) {
sorted_elements[distances.indexOf( item.distance.value )] = item;
} );
rows[0].elements = sorted_elements;
delete sorted_elements;
delete distances;
首先获得已排序距离的数组,然后根据距离键给出elemets键。