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

การจัดเรียงส่วนของอาร์เรย์แยกกันด้วย JavaScript

เรามีอาร์เรย์ที่มีออบเจกต์จำนวนมาก เราต้องเขียนฟังก์ชันเพื่อจัดเรียงครึ่งแรกของอาร์เรย์ตามลำดับเพิ่มขึ้น (ascending)

และครึ่งหลังของอาร์เรย์ก็จัดเรียงตามลำดับเพิ่มขึ้นเช่นกัน แต่ไม่ให้สลับข้อมูลระหว่างครึ่งทั้งสอง

พิจารณาอาร์เรย์ตัวอย่างนี้:

const arr = [
  {id:1, x: 33},
  {id:2, x: 22},
  {id:3, x: 11},
  {id:4, x: 3},
  {id:5, x: 2},
  {id:6, x: 1}
];

ฟังก์ชันควรจัดเรียงอาร์เรย์นี้โดยอิงตาม property 'x' ของออบเจกต์ โดยคำนึงถึงเงื่อนไขข้างต้น

ตัวอย่างโค้ด

const arr = [
  {id:1, x: 33},
  {id:2, x: 22},
  {id:3, x: 11},
  {id:4, x: 3},
  {id:5, x: 2},
  {id:6, x: 1}
];
const sortInParts = array => {
  const arr = array.slice();
  const sorter = (a, b) => {
    return a['x'] - b['x'];
  };
  const arr1 = arr.splice(0, arr.length / 2);
  arr.sort(sorter);
  arr1.sort(sorter);
  return [...arr1, ...arr];
};
console.log(sortInParts(arr));

ผลลัพธ์

ผลลัพธ์ที่แสดงในคอนโซลจะเป็นดังนี้:

[
  { id: 3, x: 11 },
  { id: 2, x: 22 },
  { id: 1, x: 33 },
  { id: 6, x: 1 },
  { id: 5, x: 2 },
  { id: 4, x: 3 }
]