2012-06-05 45 views
7

Tôi có một mảng đối tượng JavaScript tùy chỉnh có thuộc tính có tên order. Tôi có một mảng của đối tượng này, và tôi muốn có được món hàng với "thứ tự" cao nhất.Lấy phần tử trong mảng với giá trị lớn nhất của thuộc tính bằng cách sử dụng jQuery

Vì tôi là tương đối mới để jQuery, và đến từ một C# nền tảng này là một trong những trường hợp mà tôi đánh giá cao LINQ :)

Dù sao, để cắt một câu chuyện dài ngắn, tôi đã kiểm tra các liên kết sau đây nhưng chúng chỉ trả về giá trị và không phải là tham chiếu của chính phần tử mảng ... Vì vậy, một chút trợ giúp trong việc thay đổi điều đó để trả về phần tử sẽ được đánh giá cao.

jQuery min/max property from array of elements

element with the max height from a set of elements

Đối tượng tùy chỉnh trong câu hỏi (mà tôi có một loạt các) như sau:

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

Hãy cho chúng tôi một mã số đầy đủ về những gì bạn có hoặc một bản demo jsfiddle.net. – gdoron

Trả lời

8

Có lẽ tôi bạn đã sai ... nhưng bạn đang tìm kiếm?

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

thử điều này:

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

là loại đắt tiền để tìm giá trị tối đa. Bạn đang thực hiện nhiều thao tác hơn những gì cần thiết. – epascarello

+0

Chức năng sắp xếp của bạn không trả về bất kỳ thứ gì và để có giá trị cao nhất tại chỉ mục '0', bạn cần thực hiện ít hơn so sánh' <', mặc dù phép trừ sẽ tốt hơn. 'b [value] - một [giá trị]' –

+0

@amnotiam - cảm ơn cho nhận xét. cố định câu trả lời của tôi. –

0

Sắp xếp mảng và bật các đối tượng cuối cùng trong mảng

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

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

0

sử dụng yourarray.sort() nó sẽ sắp xếp trong tăng dần lên thứ tự giảm dần. cũng hợp lệ cho các mảng 2-D.

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)))] 
 
)

Các vấn đề liên quan