排序数组和循环数组

时间:2017-06-21 17:21:46

标签: javascript arrays sorting

我找到了关于如何对数组进行排序的各种示例,但是没有一个示例显示如何使用数组。

我正在使用谷歌距离矩阵从一个原点检索多个目的地的距离数据。我可以输出目的地信息而不是问题:

$.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"
    ],

]
}

我可以按循环中的变量排序吗?

1 个答案:

答案 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键。