2012-06-05 334 views
7

我有一个自定义JavaScript对象的数组,它具有一个名为order的属性。我有这个对象的数组,我想获得具有最高“顺序”的项目。使用jQuery获取数组中元素的最大值属性

因为我是比较新的jQuery和从C#背景的这是我非常欣赏的LINQ的实例:)

之一反正削减长话短说,我已检查下面的链接,但他们只返回值,而不是数组元素本身的引用...所以有一点帮助改变,返回元素将不胜感激。

jQuery min/max property from array of elements

element with the max height from a set of elements

在考虑中的自定义对象(我具有的阵列)如下:

var severity = function (key, value, order) { 
    this.key = key; 
    this.value = value; 
    this.order = order; 
}; 
+0

给我们的,你有什么完整的代码或jsfiddle.net演示。 – gdoron

回答

8

也许我你错了......但是你在找什么?

function getHighest(array) { 
    var max = {}; 
    for (var i = 0; i < array.length; i++) { 
     if (array[i].order > (max.order || 0)) 
      max = array[i]; 
    } 
    return max; 
} 

// var array = [object, object, object ...]; 
var highest = getHighest(array); 

DEMO:http://jsfiddle.net/c6gfj/

-1

尝试:

function getHighest(array, value){ 
    return array.sort(function(a,b){ b[value] - a[value] })[0]; 
} 
+1

排序是很昂贵的找到最大值。你正在做的操作比所需要的多。 – epascarello

+0

你的排序函数没有返回任何东西,为了得到'0'的最高值,你需要做比'<'少的比较,尽管减法会更好。 'b [value] - a [value]' – 2012-06-05 13:03:22

+0

@amnotiam - 感谢您的评论。修正了我的答案。 –

0

排序阵列和流行的最后一个对象数组

function sortObj(a, b){ 
    return a.order < b.order ? 0 : 1; 
} 
obj.sort(sortObj) 
var highest =obj.pop(); 

DEMO:http://jsfiddle.net/VaYNb/

0

使用yourarray.sort(),它会在排序升序为降序。它也适用于二维数组。

0
array[array.map((o)=>o.order).indexOf(Math.max(...array.map((o)=>o.order)))] 

DEMO:

let array=[{order:3},{order:5},{order:2},{order:2}]; 
 

 
console.log(
 
    array[array.map((o)=>o.order).indexOf(Math.max(...array.map((o)=>o.order)))] 
 
)

相关问题