基本的に、オブジェクトのプロパティ/メンバー変数のいずれかで配列内のオブジェクトを並べ替える関数を作成したいと考えています。エラーが隠されているのは比較機能にあると確信していますが、100%確実ではありません。
sort 関数が呼び出された後に取得する必要がある出力は です1,2,3
。つまり、変更されていないこと1,3,2
を意味します
これは js コード全体です (いくつかのコメントを含む)。
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;
}