Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.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_Performance_Logic - Fatal编程技术网

Javascript 排序功能有什么问题,还需要改进

Javascript 排序功能有什么问题,还需要改进,javascript,performance,logic,Javascript,Performance,Logic,我有一个json对象有一些记录,我需要对该对象进行排序 代码: //这个函数有什么问题 function sortObj(obj, nextObj){ console.log(obj.position); console.log(nextObj.position); if(obj.position < nextObj.position){ return obj; }else{ return nextObj; } }

我有一个json对象有一些记录,我需要对该对象进行排序

代码:

//这个函数有什么问题

function sortObj(obj, nextObj){
    console.log(obj.position);
    console.log(nextObj.position);
    if(obj.position < nextObj.position){
        return obj;
    }else{
        return nextObj;
    }
}

var driverObjects = data[0].MRData.StandingsTable.StandingsLists[0].DriverStandings;
console.log(driverObjects);
var sortedData = driverObjects.sort(sortObj); //Do I need to use any other functions //like filter, map ?
console.log(sortedData);
功能sortObj(obj,nextObj){
控制台日志(目标位置);
控制台日志(nextObj.位置);
if(目标位置<下一个目标位置){
返回obj;
}否则{
返回nextObj;
}
}
var driverObjects=data[0]。MRData.StandingsTable.StandingsLists[0]。DriverStandings;
控制台日志(驱动对象);
var sortedData=driverObjects.sort(sortObj)//我是否需要使用任何其他函数//如过滤器、映射?
控制台日志(sortedData);

看一下控制台,要使用输出,我将输出排除在外,如下所示

[Object{position=“1”,positionText=“1”,points=“100”,more…},Object{position=“2”,positionText=“2”,points=“97”,more…}]

但它的显示方式与传递的函数相同

  • 请纠正功能错误
  • 给我一个优化的或更标准的代码实现

  • 排序方法的回调函数应返回
    -1
    (当第二个参数较大时)、
    0
    (当两个参数相等时)或
    1
    (当第一个参数较大时)

    所以您需要这个排序函数:

    function sortObj(obj, nextObj){
        return obj.position - nextObj.position;
    }
    
    sortObj()应返回正值或负值或0

    你可以这样做

    function sortObj(obj, nextObj){
        console.log(obj.position);
        console.log(nextObj.position);
        return nextObj.position-obj.position
    }
    

    谢谢,我以前试过,但可能没有正确检查,非常感谢,我犯了这样一个愚蠢的错误
    function sortObj(obj, nextObj){
        console.log(obj.position);
        console.log(nextObj.position);
        return nextObj.position-obj.position
    }