我正在创建一个反应原生的社交媒体应用。我试图从服务器上渲染该应用程序上的所有帖子。我从我的服务器上收到帖子,但它们的时间顺序不合适。我在每个帖子中都有一个时间戳元素。如何按此时间戳对帖子进行排序?
我只包含了我认为是这个问题的基本信息,所以请询问您是否需要对某些内容进行更多说明。
我的对象看起来像这样:
Array[
Object {
//...
"time": 1515892254405,
},
Object {
//...
"time": 1515882632486,
},
]
答案 0 :(得分:1)
尝试使用标准的Array.sort()和compare函数来比较每个对象的time属性。
let arr = [{"time": 1515892254405},{"time": 1515882632486}];
arr.sort(function(a, b) {return a.time - b.time}); // sorts in ascending order
console.log(arr);
arr.sort(function(a, b) {return b.time - a.time}); // sorts in descending order
console.log(arr);

答案 1 :(得分:0)
有很多方法,首先,因为objects
是一个数组,所以你可以这样做:
items.sort(function (item_1, item_2) {
const { time: t1 } = item_1;
const { time: t2 } = item_2;
// This will sort your objects from latest to oldest
if (t1 > t2) {
return -1;
} else if (t1 < t2) {
return 1;
} return 0;
// This will sort your objects from oldest to latest
// if (t1 > t2) {
// return 1;
// } else if (t1 < t2) {
// return -1;
// } return 0;
});
或者,您可以安装lodash
模块,这非常有用:
npm install --save lodash
然后在你的应用中,
import _ from 'lodash';
_.sortBy(items, 'time'); // oldest to latest
// _.sortBy(items, 'time').reverse(); // latest to oldest
答案 2 :(得分:0)
用于对字符串值进行排序
const sortedData = contacts.sort((a, b) => a.name.localeCompare(b.name))