Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript中字符串和布尔值的排序数组_Javascript_Sorting - Fatal编程技术网

javascript中字符串和布尔值的排序数组

javascript中字符串和布尔值的排序数组,javascript,sorting,Javascript,Sorting,我很难让这种机器工作。 当前始终优先于名称。 我可以让它对current或name的值进行排序,但不能同时对两者进行排序 我的数组看起来像这样 var arr = [{current:true, name:"A name"}, {name:"A name"}, {name:"B name"}, {current:true, name:"B name"}]; arr.sort(sort_me) 这里是排序函数 var sort_me = functio

我很难让这种机器工作。 当前始终优先于名称。 我可以让它对current或name的值进行排序,但不能同时对两者进行排序

我的数组看起来像这样

var arr = [{current:true, name:"A name"},
           {name:"A name"}, {name:"B name"},
           {current:true, name:"B name"}];
arr.sort(sort_me)
这里是排序函数

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();
                        }
                    }
                }
            }
var sort\u me=函数(左、右){
var value=“name”;
var sort_by_val=函数(){
返回左[值]==右[值]?0:(左[值]<右[值]?-1:1);
}
if(左.当前===右.当前){
按值排序();
}否则{
如果(左。当前===真){
返回-1;
}否则{
如果(右。当前===真){
返回1;
}否则{
按值排序();
}
}
}
}

您缺少一个
返回:

if(left.current===right.current) {
    return sort_by_val();
}
否则,如果同时设置了
当前
s,则返回值将为
未定义

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;
    }
}
var sort\u me=函数(左、右){
var nameorder=left.name==right.name?0:(left.name
您缺少一个
返回:

if(left.current===right.current) {
    return sort_by_val();
}
否则,如果同时设置了
当前
s,则返回值将为
未定义

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;
    }
}
var sort\u me=函数(左、右){
var nameorder=left.name==right.name?0:(left.name
试试看

var sort\u me=函数(左、右){
var value=“name”;
var sort_by_val=函数(){
返回左[值]==右[值]?0:(左[值]<右[值]
? -1
: 1);
}
if(left.current==right.current){
return sort_by_val();//缺少返回
}否则{
如果(left.current==true){
返回-1;
}else if(right.current==true){
返回1;
}否则{
return sort_by_val();//缺少返回
}
}
}
演示:

试试看

var sort\u me=函数(左、右){
var value=“name”;
var sort_by_val=函数(){
返回左[值]==右[值]?0:(左[值]<右[值]
? -1
: 1);
}
if(left.current==right.current){
return sort_by_val();//缺少返回
}否则{
如果(left.current==true){
返回-1;
}else if(right.current==true){
返回1;
}否则{
return sort_by_val();//缺少返回
}
}
}
演示: