如何对JavaScript数组按时间戳排序?排序异常问题求助
Fixing Timestamp Sorting Issue for Your Object Array
嘿,我马上就发现你排序无效的问题根源啦!
问题出在哪?
你创建的userArray里的每个元素都是单个对象(比如你定义的userValue是包含timestamp、username等属性的对象),但你在排序函数里错误地用了a[0]['timestamp']——这是把数组元素当成了二维数组来访问,可实际上每个元素本身就是独立的对象,根本没有索引为0的子元素,所以这个写法完全取不到timestamp的值,排序自然就失效了。
正确的排序代码
直接访问对象的timestamp属性就行,两种写法都可以:
写法1:传统函数
userArray.sort(function(a, b) { // 升序排序(时间戳从小到大) return a.timestamp - b.timestamp; });
写法2:箭头函数(更简洁)
// 升序排序 userArray.sort((a, b) => a.timestamp - b.timestamp); // 如果需要降序排序(时间戳从大到小),反过来就行: userArray.sort((a, b) => b.timestamp - a.timestamp);
验证示例
我们用模拟数据测试一下:
// 模拟你的数组数据 const userArray = []; userArray.push({ timestamp: 1620000000, username: 'Alice', message: 'Hi' }); userArray.push({ timestamp: 1610000000, username: 'Bob', message: 'Hello' }); userArray.push({ timestamp: 1630000000, username: 'Charlie', message: 'Hey' }); // 执行升序排序 userArray.sort((a, b) => a.timestamp - b.timestamp); console.log(userArray); // 输出结果会按timestamp从小到大排列:Bob → Alice → Charlie
这样就能得到你想要的按时间戳排序后的数组啦!
内容的提问来源于stack exchange,提问作者coder_B
相关产品推荐
相关产品推荐

