基本上我想要构建一个函数,根据对象的一个属性/成员变量对数组中的对象进行排序。我非常确定比较函数是隐藏错误的地方,但我不是百分之百确定。
调用排序函数后,我应该得到的输出结果是1,2,3
。但我得到的是1,3,2
,这意味着它没有改变。
这是整个JavaScript代码(带一些注释):
var arr = [];
//object definition and creation
var main = document.getElementById("main");
var task = {
name: "",
priority: 0
};
//first
var one = Object.create(task);
one.priority = 1;
//secondd
var two = Object.create(task)
two.priority = 3;
//last
var three = Object.create(task);
three.priority = 2;
//append
arr.push(one);
arr.push(two);
arr.push(three);
//sort function
function sortT() {
arr.sort(compareFN);
}
//comperator function
function compareFN() {
return task.priority < task.priority;
}
function print() {
for (var i = 0; i < arr.length; i++) {
console.log(arr[i].priority);
}
}
//execution of the program
print();
sortT();
print();
编辑:解决方案如下 - 如先前所述,比较函数确实是问题所在,正确的编写方式如下:
function compareFN(taskA, taskB) {
return taskA.priority < taskB.priority;
}