สมมติว่าเรามีอาร์เรย์ของอ็อบเจกต์ที่มีคะแนนของผู้เล่นบางคนในเกมไพ่:
const scorecard = [
{ name: "Zahir", score: 23 },
{ name: "Kabir", score: 13 },
{ name: "Kunal", score: 29 },
{ name: "Arnav", score: 42 },
{ name: "Harman", score: 19 },
{ name: "Rohit", score: 41 },
{ name: "Rajan", score: 34 }
];
เรายังมีตัวแปรชื่อ selfName ที่มีชื่อของผู้เล่นคนหนึ่ง:
const selfName = 'Arnav';
เราต้องเขียนฟังก์ชันที่จัดเรียงอาร์เรย์ scorecard ในลำดับอักษร และให้แน่ใจว่าอ็อบเจกต์ที่มีชื่อตรงกับ selfName อยู่บนสุด (ดัชนี 0)
มาเขียนโค้ดสำหรับปัญหานี้กัน:
ตัวอย่างโค้ด
const scorecard = [
{ name: "Zahir", score: 23 },
{ name: "Kabir", score: 13 },
{ name: "Kunal", score: 29 },
{ name: "Arnav", score: 42 },
{ name: "Harman", score: 19 },
{ name: "Rohit", score: 41 },
{ name: "Rajan", score: 34 }
];
const selfName = 'Arnav';
const sorter = (a, b) => {
if (a.name === selfName) {
return -1;
}
if (b.name === selfName) {
return 1;
}
return a.name < b.name ? -1 : 1;
};
scorecard.sort(sorter);
console.log(scorecard);
ผลลัพธ์
ผลลัพธ์ในคอนโซลจะเป็นดังนี้:
[
{ name: 'Arnav', score: 42 },
{ name: 'Harman', score: 19 },
{ name: 'Kabir', score: 13 },
{ name: 'Kunal', score: 29 },
{ name: 'Rajan', score: 34 },
{ name: 'Rohit', score: 41 },
{ name: 'Zahir', score: 23 }
]