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.min test()代码>如果将函数调用test
放在末尾,它将工作。这与JavaScript中的应用程序相关
var比较器=(a,b)=>{
如果(a.min!==b.min){
如果(a.min test()代码>变量提升上的读取变量提升上的读取也可以将其放在函数声明之前,因为这将是hoisted@charlietfl对的谢谢你也指出这一点。我刚刚更新了我的答案。也可以将它放在函数声明之前,因为这将是hoisted@charlietfl对的谢谢你也指出这一点。我刚刚更新了我的答案。