オブジェクトのリストからランダムに 3 つのアイテムを選択し、それらを 1 つのフィールドでアルファベット順に並べ替え、別のフィールドの値をアルファベット順に表示するスクリプトを作成しようとしています。これまでのところ、アイテムをランダムに選択して表示することはできますが、まだソートされていません。これが私のコードです:
function random_text() {};
var random_text = new random_text();
var number = 0;
random_text[number++] = {
show: "Bob",
sort: "A"
}
random_text[number++] = {
show: "Casey",
sort: "B"
}
random_text[number++] = {
show: "Dan",
sort: "C"
}
random_text[number++] = {
show: "Alfred",
sort: "D"
}
var random_number = Math.floor(Math.random() * number);
var random_number1 = Math.floor(Math.random() * number);
var random_number2 = Math.floor(Math.random() * number);
if (random_number !== random_number1) {
var name1 = random_text[random_number1].show;
} else {
var name1 = "";
}
if (random_number !== random_number2 && random_number1 !== random_number2) {
var name2 = random_text[random_number2].show;
} else {
var name2 = "";
}
var name3 = random_text[random_number].show;
var objs = [name1 + " " + name2 + " " + name3];
objs.sort(function (a, b) {
var nameA = a.sort.toLowerCase(),
nameB = b.sort.toLowerCase()
if (nameA < nameB) //sort string ascending
return -1
if (nameA > nameB) return 1
return 0 //default return value (no sorting)
})
document.write(objs.sort());
助けてくれてありがとう。コードをクリーンアップできる方法があれば、それに関するヒントもいただければ幸いです。