簡體   English   中英

使用 Lodash 按值對對象數組進行排序

[英]use Lodash to sort array of object by value

我正在嘗試按“名稱”值對數組進行排序(使用 Lodash)。 我使用 Lodash 文檔來創建下面的解決方案,但是 .orderBy 似乎根本沒有任何影響。 任何人都可以闡明對數組進行排序的正確方法嗎?

字符數組

[  
   {  
      "id":25,
      "name":"Anakin Skywalker",
      "createdAt":"2017-04-12T12:48:55.000Z",
      "updatedAt":"2017-04-12T12:48:55.000Z"
   },
   {  
      "id":1,
      "name":"Luke Skywalker",
      "createdAt":"2017-04-12T11:25:03.000Z",
      "updatedAt":"2017-04-12T11:25:03.000Z"
   }
]

功能代碼

 var chars = this.state.characters;

 _.orderBy(chars, 'name', 'asc'); // Use Lodash to sort array by 'name'

 this.setState({characters: chars})

此方法orderBy不會更改輸入數組,您必須將結果分配給您的數組:

var chars = this.state.characters;

chars = _.orderBy(chars, ['name'],['asc']); // Use Lodash to sort array by 'name'

 this.setState({characters: chars})

您可以使用 lodash sortBy ( https://lodash.com/docs/4.17.4#sortBy )。

你的代碼可能是這樣的:

const myArray = [  
   {  
      "id":25,
      "name":"Anakin Skywalker",
      "createdAt":"2017-04-12T12:48:55.000Z",
      "updatedAt":"2017-04-12T12:48:55.000Z"
   },
   {  
      "id":1,
      "name":"Luke Skywalker",
      "createdAt":"2017-04-12T11:25:03.000Z",
      "updatedAt":"2017-04-12T11:25:03.000Z"
   }
]

const myOrderedArray = _.sortBy(myArray, o => o.name)

如果需要按日期排序,可以使用以下解決方案:

orderBy(employeePensions, (a) => new Date(a.startDate), ['asc']) // or 'desc'

如果您使用的是moment庫,則:

orderBy(employeePensions, (a) => moment(a.startDate), 'asc')

Ps 請注意, lodash不會以字符串格式對日期進行排序,因此您必須將其轉換為 Date 對象。

暫無
暫無

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

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