Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> JavaScript

จัดเรียงอาร์เรย์ใหม่ตามเงื่อนไขใน JavaScript

สมมติว่าเรามีอาร์เรย์ของอ็อบเจกต์ที่มีคะแนนของผู้เล่นบางคนในเกมไพ่:

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 }
]