2010-10-07 60 views
27

Sau khi tạo mảng đa mảng như thế này, làm thế nào để sắp xếp nó?Javascript: sắp xếp mảng đa chiều

Giả sử 'đánh dấu' đã được xác định:

var location = []; 
for (var i = 0; i < markers.length; i++) { 
    location[i] = {}; 
    location[i]["distance"] = "5"; 
    location[i]["name"] = "foo"; 
    location[i]["detail"] = "something"; 
} 

Đối với ví dụ trên, tôi cần phải sắp xếp nó bằng cách 'khoảng cách'. Tôi đã nhìn thấy các câu hỏi khác về sắp xếp mảng và mảng đa mờ, nhưng dường như không có tác dụng nào cho việc này.

Trả lời

44
location.sort(function(a,b) { 

    // assuming distance is always a valid integer 
    return parseInt(a.distance,10) - parseInt(b.distance,10); 

}); 

phương thức javascript là array.sort có tham số tùy chọn, là tham chiếu hàm cho so sánh tùy chỉnh. giá trị trả về là >0 nghĩa là b trước, 0 nghĩa là ab bằng nhau và <0 có nghĩa là a trước tiên.

+0

Điều này làm việc, mặc dù "khoảng cách" là một số thập phân (như "964.543") vì vậy parseInt phải được loại bỏ, nếu không sắp xếp không chính xác quá khứ dấu thập phân. – Jeff

+5

@Deca 'parseFloat (a.distance)' sẽ phù hợp trong trường hợp đó. – lincolnk

+1

Ah! Cảm ơn bạn lincolnk! – Jeff

10

Bạn đã thử cái này chưa?

location.sort(function(a,b) { 
    return a.distance - b.distance; 
}); 
+0

Điều này đã làm các trick, cảm ơn bạn. – Jeff

1

Cả hai chức năng loại đăng cho đến nay nên làm việc, nhưng vấn đề chính của bạn sẽ được sử dụng như là một biến location vì nó đã là hệ thống xác định.

+3

+1 điểm tốt. Nhưng nó không thực sự là một câu trả lời ... :) Bạn nên đã nhận xét về một trong số họ. – galambalazs

+0

"vị trí" không phải là tên var thực tế, vì vậy chúng tôi ở đó tốt. – Jeff

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