不,这不是一个数组,而是一个对象,并且 Javascript 对象的属性根据定义是无序的;所以对它们进行排序是没有意义的。
您可以改为使用确实有顺序的数组,并像这样重构数据:
var arr = [
{ date: 1436796000000, value: ["Task1","Task2"] },
{ date: 1437400800000, value: ["Task4","Task8"] },
{ date: 1436968800000, value: ["Task3","Task2"] },
{ date: 1436882400000, value: ["Task5","Task6"] }
]
然后你可以按日期排序:
arr.sort( function ( a, b ) { return b.date - a.date; } );
如果您不想重组数据,您可以按照您想要的顺序迭代它,方法是获取其键的数组并对该数组进行排序,然后使用该数组访问对象的属性,但您需要这样做每次您想要以特定顺序迭代它时,因为对象中仍然没有存储顺序信息:
// 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] ] );
}
你需要垫片对象.keys https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/keys#Polyfill/支持 IE 8 及更早版本的浏览器。