2010-10-04 51 views
14

Tôi biết điều này phải tương đối đơn giản, nhưng tôi có một tập dữ liệu JSON mà tôi muốn sắp xếp theo ngày. Cho đến nay, tôi đã gặp phải vấn đề ở mọi ngã rẽ. Ngay bây giờ tôi có ngày được lưu trữ là this.lastUpdated. Tôi có quyền truy cập vào jquery nếu điều đó giúp, nhưng tôi nhận ra .sort() là JS gốc. Cảm ơn trước.sắp xếp JSON theo ngày

+0

Trường định dạng của bạn là định dạng nào? – orolo

+2

nhìn vào đây câu hỏi tương tự http://stackoverflow.com/questions/979256/how-to-sort-a-json-array –

+0

JSON là một định dạng được tuần tự hóa (một chuỗi). Tôi không nghĩ rằng bạn có thể làm bất cứ điều gì với nó cho đến khi bạn chuyển đổi nó thành một đối tượng (eval hoặc chức năng khung js tùy chỉnh). –

Trả lời

29

Giả sử bạn có một mảng của các đối tượng javascript, chỉ cần sử dụng một chức năng tùy chỉnh sắp xếp:

function custom_sort(a, b) { 
    return new Date(a.lastUpdated).getTime() - new Date(b.lastUpdated).getTime(); 
} 
var your_array = [ 
    {lastUpdated: "2010/01/01"}, 
    {lastUpdated: "2009/01/01"}, 
    {lastUpdated: "2010/07/01"} 
]; 

your_array.sort(custom_sort); 

Array sort phương pháp sắp xếp một mảng bằng cách sử dụng chức năng gọi lại đó là thông qua cặp phần tử trong mảng.

  • Nếu giá trị trả về là tiêu cực, tham số đầu tiên (a trong trường hợp này), sẽ đi trước đối số thứ hai (b) trong mảng được sắp xếp.
  • Nếu giá trị trả về bằng 0, vị trí của chúng đối với nhau không thay đổi.
  • Nếu giá trị trả về là dương, b đứng trước a trong mảng được sắp xếp.

Bạn có thể đọc thêm về phương thức sorthere.

+0

JSON không được quản lý là một đối tượng không phải mảng. '.sort()' chỉ có sẵn trên các mảng. –

+0

Xin lỗi vì sự downvote! Nó là một tai nạn. Tôi đã không chú ý khi tôi nhấp vào trang và bây giờ tôi không thể thay đổi nó. – Whitecat

+0

Đừng lo lắng, cảm ơn lời giải thích! –