Phương pháp Array.sort() sắp xếp các yếu tố của một mảng tại chỗ và trả về mảng. Hãy cẩn thận với Array.sort() vì nó không phải là Immutable. Để sử dụng loại không thay đổi immutable-sort.
Phương pháp này là sắp xếp mảng bằng cách sử dụng updated_at
hiện tại ở định dạng ISO. Chúng tôi sử dụng new Data(iso_string).getTime()
để chuyển đổi thời gian ISO thành dấu thời gian Unix. Dấu thời gian của Unix là một số mà chúng ta có thể làm toán đơn giản.Chúng tôi trừ dấu thời gian đầu tiên và thứ hai kết quả là; nếu dấu thời gian đầu tiên lớn hơn giây thứ hai thì số trả về sẽ là số dương. Nếu số thứ hai lớn hơn giá trị trả về đầu tiên sẽ là số âm. Nếu hai là cùng một sự trở lại sẽ bằng không. Điều này sẽ hoàn hảo với các giá trị trả về yêu cầu cho hàm inline.
Đối ES6:
arr.sort((a,b) => new Date(a.updated_at).getTime() - new Date(b.updated_at).getTime());
Đối ES5:
arr.sort(function(a,b){
return new Date(a.updated_at).getTime() - new Date(b.updated_at).getTime();
});
Nếu bạn thay đổi updated_at
của bạn sẽ được unix dấu thời gian bạn có thể làm điều này:
Đối ES6:
arr.sort((a,b) => a.updated_at - b.updated_at);
Đối ES5:
arr.sort(function(a,b){
return a.updated_at - b.updated_at;
});
Vào thời điểm bài viết này, trình duyệt hiện đại không hỗ trợ ES6. Để sử dụng ES6 trong trình duyệt hiện đại, hãy sử dụng babel để chuyển mã thành ES5. Mong đợi hỗ trợ trình duyệt cho ES6 trong tương lai gần.
Array.sort() nên receave một giá trị trả về của một trong 3 khả năng xảy ra:
- Một số dương (mục đầu tiên> mục thứ hai)
- Một số tiêu cực (đầu mục < mục thứ hai)
- 0 nếu hai mục là bằng nhau
Lưu ý rằng giá trị trả về trên hàm nội tuyến có thể có số dương hoặc âm. Array.Sort() không quan tâm đến số trả về của . Nó chỉ quan tâm nếu giá trị trả lại là dương, âm hoặc không.
Đối với loại Immutable: (ví dụ trong ES6)
const sort = require('immutable-sort');
const array = [1, 5, 2, 4, 3];
const sortedArray = sort(array);
Bạn cũng có thể viết nó theo cách này:
import sort from 'immutable-sort';
const array = [1, 5, 2, 4, 3];
const sortedArray = sort(array);
Việc nhập khẩu-từ mà bạn nhìn thấy là một cách mới để bao gồm javascript trong ES6 và làm cho mã của bạn trông rất sạch sẽ. Yêu thích cá nhân của tôi.
Loại không thể loại bỏ không làm thay đổi mảng nguồn thay vì trả về một mảng mới. Sử dụng const
được khuyến nghị trên dữ liệu không thay đổi được.
chức năng tùy chỉnh: http://stackoverflow.com/questions/777597/sorting-an-associative-array-in-php –
@Topener liên kết đó trông giống như nó là một câu hỏi về PHP –
sai lầm của tôi .. đã không đọc nó một cách chính xác –