Far*_*sir 5 javascript arrays sorting underscore.js
我有以下对象数组,其中键是UTC格式的日期.
Array = [{1436796000000:["Task1","Task2"],
1437400800000:["Task4","Task8"],
1436968800000: ["Task3","Task2"],
1436882400000:["Task5","Task6"]}]
Run Code Online (Sandbox Code Playgroud)
我想按键降序排序这个数组对象.因此预期的输出将跟随最新的日期将首先出现.
Array = [{1437400800000:["Task4","Task8"],
1436968800000: ["Task3","Task2"],
1436882400000:["Task5","Task6"],
1436796000000:["Task1","Task2"]}]
Run Code Online (Sandbox Code Playgroud)
我怎么能在javascript或使用underscore.js这样做?
Pau*_*aul 14
不,这不是一个数组,它是一个对象,Javascript对象的属性按定义是无序的; 所以对它们进行排序毫无意义.
您可以改为使用具有顺序的数组,并重构您的数据,如下所示:
var arr = [
{ date: 1436796000000, value: ["Task1","Task2"] },
{ date: 1437400800000, value: ["Task4","Task8"] },
{ date: 1436968800000, value: ["Task3","Task2"] },
{ date: 1436882400000, value: ["Task5","Task6"] }
]
Run Code Online (Sandbox Code Playgroud)
然后你可以按日期排序:
arr.sort( function ( a, b ) { return b.date - a.date; } );
Run Code Online (Sandbox Code Playgroud)
如果您不想重构数据,可以按照您想要的顺序迭代它,通过获取其数组的数组并对该数组进行排序,然后使用该数组访问对象的属性,但您需要执行此操作这是每次你想以特定的顺序迭代它时,因为对象中仍然没有存储订单信息:
// Get the array of keys
var keys = Object.keys( obj );
// Sort the keys in descending order
keys.sort( function ( a, b ) { return b - a; } );
// Iterate through the array of keys and access the corresponding object properties
for ( var i = 0; i < keys.length; i++ ) {
console.log( keys[i], obj[ keys[i] ] );
}
Run Code Online (Sandbox Code Playgroud)
您需要使用Shim Object.keys来支持IE 8和更旧的浏览器.
| 归档时间: |
|
| 查看次数: |
19063 次 |
| 最近记录: |