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)
但这不起作用有人能告诉我错误在哪里吗?
排序功能应该可以正常工作。但是您不应该在化简器中改变原始状态。您可以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)