Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/33.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_Node.js_Sorting - Fatal编程技术网

Javascript 按属性排序对象不起作用

Javascript 按属性排序对象不起作用,javascript,node.js,sorting,Javascript,Node.js,Sorting,我遵循了关于排序的文档。它不起作用了。我甚至遇到了一个更奇怪的问题:几个小时后,我发现如果我将var比较器更改为函数比较器(a,b),它就会工作。这是为什么 test(); var comparator = (a, b) => { if (a.min !== b.min) { if (a.min < b.min) { return -1 } else { return +1 }

我遵循了关于排序的文档。它不起作用了。我甚至遇到了一个更奇怪的问题:几个小时后,我发现如果我将
var比较器
更改为
函数比较器(a,b)
,它就会工作。这是为什么

test();

var comparator = (a, b) => {
    if (a.min !== b.min) {
        if (a.min < b.min) {
            return -1
        } else {
            return +1
        }
    } else {
        if (a.max !== b.max) {
            if (a.max < b.max) {
                return -1
            } else {
                return +1
            }
        } else {
            return 0;
        }
    }
}
function test() {
    for (var x = 0; x < 1; x++) {
        var tests = [{min: 18, max: 20},
            {min: 17, max: 20},
            {min: 10, max: 11}];
        console.log(tests.sort(comparator), 'test sorted');
    }

}
test();
var比较器=(a,b)=>{
如果(a.min!==b.min){
如果(a.min
这是因为变量问题。您试图在定义函数表达式之前调用它。当您运行它时,
比较器
未定义的
,这是因为变量问题。您试图在定义函数表达式之前调用它。当您运行它时,
比较器
未定义的

如果您在末尾调用函数
测试
,它将工作。这与JavaScript中的应用程序相关

var比较器=(a,b)=>{
如果(a.min!==b.min){
如果(a.mintest()如果将函数调用
test
放在末尾,它将工作。这与JavaScript中的应用程序相关

var比较器=(a,b)=>{
如果(a.min!==b.min){
如果(a.mintest()变量提升上的读取变量提升上的读取也可以将其放在函数声明之前,因为这将是hoisted@charlietfl对的谢谢你也指出这一点。我刚刚更新了我的答案。也可以将它放在函数声明之前,因为这将是hoisted@charlietfl对的谢谢你也指出这一点。我刚刚更新了我的答案。