Chi*_*hin 0 javascript sorting
我很难让这种工作。当前总是优先于名称。我可以根据当前或名称的值对它进行排序,但不能同时对两者进行排序。
我的数组看起来像这样。
var arr = [{current:true, name:"A name"},
{name:"A name"}, {name:"B name"},
{current:true, name:"B name"}];
arr.sort(sort_me)
Run Code Online (Sandbox Code Playgroud)
这是排序功能。
var sort_me = function(left, right){
var value = "name";
var sort_by_val = function(){
return left[value] == right[value] ? 0 : (left[value] < right[value] ? -1 : 1);
}
if(left.current===right.current) {
sort_by_val();
}else{
if(left.current===true){
return -1;
}else{
if(right.current===true){
return 1;
}else{
sort_by_val();
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
您缺少return:
if(left.current===right.current) {
return sort_by_val();
}
Run Code Online (Sandbox Code Playgroud)
否则,undefined如果两个current都设置,则返回值为:
var sort_me = function(left, right){
var nameorder = left.name === right.name ? 0 : (left.name < right.name ? -1 : 1);
if(
(left.current && right.current) ||
(!left.current && !right.current)
) {
return nameorder;
} else if(left.current) {
return -1;
} else {
return 1;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1845 次 |
| 最近记录: |