常见的对象数组排序,一般是按照key对应的value进行排序,或者按照key的值进行排序。
比如
RebateCycle = {
1: "b",
4: "d",
2: "a",
3: "c",
}
RebateCycle = {
1: "b",
2: "a",
3: "c",
4: "d",
}
//可以按照key进行排序,
RebateCycle = {
2: "a",
1: "b",
3: "c",
4: "d",
}
这里有一种比较特殊的情况,比如已经知道
RebateCycle = {
WITH_PAYMENT: "对账时",
MONTH: "每月1日",
SEASON: "每季度1日",
YEAR: "每年1月1日",
}
后端传来的数据,按照这个RebateCycle中key的固定顺序进行排序
先把RebateCycle对象中key抽出来var keys = Object.keys(RebateCycle)
keys.indexOf(item.key) 就是后端传来的某一组数据,它的key在数组的位置序号。然后通过
sort(function(a,b){return keys.indexOf(a.key)-keys.indexOf(b.key)})来排序
getOptions: function(parameter){
if(parameter.cooperationType){
$.ajax({
url: Remote.computeBasic.searchByCondition,
data: parameter,
type: 'POST',
success: function (data) {
var keys = Object.keys(RebateCycle)
var options = data.map(function (n) {
return {value: n.cycle, label:RebateCycle[n.cycle],name: n.cycle, data: n};
}).sort(function (item1,item2){
return keys.indexOf(item1.value) - keys.indexOf(item2.value);
})
this.setState({
options: options
})
}.bind(this)
})
}else {
this.setState({
options: []
})
}
}
网友评论