簡體   English   中英

如何按時間戳排序數組?

[英]How to sort an array by timestamp?

我正在嘗試根據時間戳值對該array進行排序。 我想按升序對它們進行排序,如果其中任何一個具有不確定的屬性,請將其放在最后。 我目前遇到錯誤“無法讀取未定義的屬性'first_release_date'” 如何解決呢?

 var array = [ { "id": 1969, "cover": { "id": 1960, "url": "image.jpg" }, "first_release_date": 1083542400, "name": "Item 1" }, { "id": 113242, "name": "Item 2" }, { "id": 25076, "first_release_date": 1540512000, "name": "Item 3" }, { "id": 1969, "cover": { "id": 1960, "url": "image.jpg" }, "name": "Item 4" }, { "id": 9245, "first_release_date": 1292976000, "name": "Item 5" } ]; Object.keys(array).forEach((key) => { console.log(`Before: ${array[key].name}`) }); array.sort((a,b) => a.array.first_release_date > b.array.first_release_date); Object.keys(array).forEach((key) => { console.log(`After: ${array[key].name}`) }); 

你快到了 僅需要在沒有日期時提供默認值。 另外,排序要求您返回一個數字,此刻返回布爾值,該布爾值將強制轉換為0或1。這將破壞您要返回負數的情況下的排序。

 var array = [ { "id": 1969, "cover": { "id": 1960, "url": "image.jpg" }, "first_release_date": 1083542400, "name": "Item 1" }, { "id": 113242, "name": "Item 2" }, { "id": 25076, "first_release_date": 1540512000, "name": "Item 3" }, { "id": 1969, "cover": { "id": 1960, "url": "image.jpg" }, "name": "Item 4" }, { "id": 9245, "first_release_date": 1292976000, "name": "Item 5" } ]; Object.values(array).forEach((val) => { var d = new Date(val.first_release_date*1000).getFullYear(); console.log(`Before: ${ val.name} ${d }`) }); array.sort((a,b) => ( a.first_release_date || Number.POSITIVE_INFINITY ) - ( b.first_release_date || Number.POSITIVE_INFINITY )); Object.values(array).forEach((val) => { var d = new Date(val.first_release_date*1000).getFullYear(); console.log(`After: ${ val.name} ${d }`) }); var reverse = JSON.parse( JSON.stringify( array )); reverse.sort((a,b) => ( b.first_release_date || Number.NEGATIVE_INFINITY ) - ( a.first_release_date || Number.NEGATIVE_INFINITY )); console.log( reverse ); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM