返回具有最低值的javascript数组中的对象

时间:2013-12-04 01:32:36

标签: javascript arrays object

我有一系列包含关键“距离”的城市

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

的数组中

如何在城市中循环并打印包含最短距离的对象?

4 个答案:

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