我有一系列包含关键“距离”的城市
ajax = new Location('123 main street', 'city, ON', 'L9Z 0K5', '905-555-5555', '905-555-555', 43.864362, -79.011627, 6);
alliston = new Location('117 Young Street', 'place, ON', 'L5R 0E9', '705-555-1234', '705-444-4321', 44.147691, -79.884193, 15);
aurora = new Location('2 New Place', 'capitol, ON', 'L8G 3W8', '905-999-0155', '905-727-5678', 44.009139, -79.470980, 1);
brampton = new Location('50 Circle Cres.', 'wendy, ON', 'L9r 8S1', '905-888-8888', null, 43.680537, -79.714164, 25);
这些对象(最后一个键是距离)存储在名为cities
的数组中如何在城市中循环并打印包含最短距离的对象?
答案 0 :(得分:2)
cities.reduce(function(a, b) {
return (b.distance < a.distance) ? b : a;
})
||
cities.sort(function(a, b) {
return a.distance - b.distance;
})[0]
答案 1 :(得分:1)
您可以使用reduce
的{{1}}方法(我假设您的Array
对象有一个名为Location
的属性;相应地进行调整):
distance
注意:使用var nearest = [ajax,alliston,aurora,brampton]
.reduce( function( nearest, location ) {
return !nearest || location.distance < nearest.distance
? location : nearest;
} );
的iccthedral解决方案比我的有点整洁,这要归功于如果你不提供初始值,他会巧妙地使用reduce
的行为。从MDN:“如果没有提供initialValue,那么[传递给回调的第一个参数]将等于数组中的第一个值。”
答案 2 :(得分:0)
将它们放入对象/数组并创建自定义排序函数:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort
...将按距离对此数组进行排序。
答案 3 :(得分:0)
我想你想使用arrayObject.sort(sortby);并定义你的sortby函数(例如,返回loc_a.distance - loc_b.distance)。