在Redux Reducer中对对象数组进行排序

Mac*_*Mac 4 javascript sorting jsx reactjs redux

我试图排序这样的数组(我的状态):

[
        {
            name:"Aenean in justo ante"
        },
        {
            name:"Phasellus viverra mattis dolor"
        }
]
Run Code Online (Sandbox Code Playgroud)

我向减速器发送了一个动作:(减速器的一部分)

case 'SORT_COLLECTION':
        return state.sort(function(a, b){
    var nameA=a.name.toLowerCase(), nameB=b.name.toLowerCase()
    if (nameA < nameB) 
        return -1 
    if (nameA > nameB)
        return 1
        return 0 
})
Run Code Online (Sandbox Code Playgroud)

但这不起作用有人能告诉我错误在哪里吗?

Håk*_*Lid 5

排序功能应该可以正常工作。但是您不应该在化简器中改变原始状态。您可以state通过state.slice()在排序之前调用来创建数组的副本。

case 'SORT_COLLECTION':
  return state.slice().sort(function(a, b) {
    var nameA = a.name.toLowerCase(),
      nameB = b.name.toLowerCase()
    if (nameA < nameB)
      return -1
    if (nameA > nameB)
      return 1
    return 0
  })
Run Code Online (Sandbox Code Playgroud)

当然,您也可以定义一个更简单的排序函数。

case 'SORT_COLLECTION':
  return state.slice().sort(function(a, b) {
    var nameA = a.name.toLowerCase(),
      nameB = b.name.toLowerCase()
    if (nameA < nameB)
      return -1
    if (nameA > nameB)
      return 1
    return 0
  })
Run Code Online (Sandbox Code Playgroud)