所述的Array.sort()方法进行排序的阵列的代替元素并返回数组。小心Array.sort()因为它不是Immutable。对于不可变排序,请使用immutable-sort。
此方法是使用当前updated_at
的 ISO 格式对数组进行排序。我们new Data(iso_string).getTime()
用来将 ISO 时间转换为 Unix 时间戳。Unix 时间戳是一个我们可以做简单数学运算的数字。我们减去第一个和第二个时间戳,结果是;如果第一个时间戳大于第二个,则返回数字将为正。如果第二个数字大于第一个,则返回值将为负数。如果两者相同,则返回为零。这与内联函数所需的返回值完全一致。
对于ES6:
arr.sort((a,b) => new Date(a.updated_at).getTime() - new Date(b.updated_at).getTime());
对于ES5:
arr.sort(function(a,b){
return new Date(a.updated_at).getTime() - new Date(b.updated_at).getTime();
});
如果您将您的updated_at
时间戳更改为 unix 时间戳,您可以执行以下操作:
对于ES6:
arr.sort((a,b) => a.updated_at - b.updated_at);
对于ES5:
arr.sort(function(a,b){
return a.updated_at - b.updated_at;
});
在撰写本文时,现代浏览器不支持 ES6。要在现代浏览器中使用 ES6,请使用babel将代码转换为 ES5。期待浏览器在不久的将来支持 ES6。
Array.sort()应该接收 3 种可能结果之一的返回值:
- 一个正数(第一项 > 第二项)
- 负数(第一项 < 第二项)
- 0 如果两项相等
请注意,内联函数的返回值可以是任何正数或负数。Array.Sort() 不关心返回数字是什么。它只关心返回值是正数、负数还是零。
对于不可变排序:(以 ES6 为例)
const sort = require('immutable-sort');
const array = [1, 5, 2, 4, 3];
const sortedArray = sort(array);
你也可以这样写:
import sort from 'immutable-sort';
const array = [1, 5, 2, 4, 3];
const sortedArray = sort(array);
您看到的 import-from 是一种在 ES6 中包含 javascript 的新方法,并使您的代码看起来非常干净。我个人的最爱。
不可变排序不会改变源数组,而是返回一个新数组。使用const
建议不可变的数据。