2013-08-22 28 views
5

Tôi có một mảng JavaScript của mảng:Làm thế nào để có được phần tử mảng lớn nhất dựa trên tiểu giá trị mảng thứ hai của mình

[[-786, 2], [-783, 1], [-782, 5], [-781, 1], [-779, 2], [-778, 1], [-775, 1], [-774, 1], [-773, 1], [-771, 2], [-769, 1], [-767, 1], [-766, 1], [-763, 2], [-760, 2]] 

Làm thế nào tôi có thể nhận được các yếu tố lớn nhất dựa trên giá trị của nguyên tố thứ hai trong mảng phụ?

Trong trường hợp trên, chúng tôi muốn có được yếu tố:

[-782, 5] 

Bởi vì 5 là giá trị thứ hai lớn nhất trong tất cả các mảng phụ. Nếu có nhiều hơn một mảng phụ có giá trị lớn thứ hai, tôi muốn có giá trị đầu tiên.

Mariusz

+0

Bạn đã kiểm tra câu trả lời này? http://stackoverflow.com/questions/5052673/jquery-min-max-property-from-array-of-elements – Kye

Trả lời

4

Thực hiện giảm dần loại dựa trên các yếu tố thứ hai của mỗi phần tử của mảng.

var array = [[-786, 2], [-783, 1], [-782, 5], [-781, 1], [-779, 2], [-778, 1], [-775, 1], [-774, 1], [-773, 1], [-771, 2], [-769, 1], [-767, 1], [-766, 1], [-763, 2], [-760, 2]]; 


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

console.log(array[0]); 

jsFiddle Demo

+0

Trong cuộc phỏng vấn, bạn sẽ không được phép sử dụng ** sắp xếp **, nó cũng không được khuyến khích để sử dụng sắp xếp vì nó rất chậm. – Andy

1
var array = [[-786, 2], [-783, 1], [-782, 5], [-781, 1], [-779, 2], [-778, 1], [-775, 1], [-774, 1], [-773, 1], [-771, 2], [-769, 1], [-767, 1], [-766, 1], [-763, 2], [-760, 2]]; 
var maxElementIndex = 0; 
for (var i = 0; i < array.length; i++) { 
    if (array[i][1] > array[maxElementIndex][1]) { 
     maxElementIndex = i; 
    } 
} 

console.log(array[maxElementIndex]); 
0
var target = [[-786, 2], [-783, 1], [-782, 5], [-781, 1], [-779, 2], [-778, 1], [-775, 1], [-774, 1], [-773, 1], [-771, 2], [-769, 1], [-767, 1], [-766, 1], [-763, 2], [-760, 2]] 
var max = 0, tmp = 0; 
var max_entry, tmp_entry; 
while (target.length > 0){ 
    tmp_entry = target.pop(); 
    tmp = tmp_entry[1]; 
    if (tmp > max){ 
     max = tmp; 
     max_entry = tmp_entry; 
    } 
} 
alert(max_entry);