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

การจัดเรียงแบบ Case-Sensitive ใน JavaScript

สมมติเรามีอาร์เรย์ของสตริงแบบนี้:

const arr = ['1185 Design','3 D Exhibits','44Doors', '4Concepts','ABC Data','acceleration'];

เราจำเป็นต้องเขียนฟังก์ชัน JavaScript ที่รับอาร์เรย์แบบนี้และจัดเรียง in-place

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

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

const arr = ['1185 Design','3 D Exhibits','44Doors', '4Concepts','ABC Data','acceleration'];
const caseSensitiveSort = (arr = []) => {
  const sorter = (a, b) => {
    if (a === b){
      return 0
    };
    if (a.charAt(0) === b.charAt(0)){
      return sorter(a.slice(1), b.slice(1))
    }
    if(a.charAt(0).toLowerCase() === b.charAt(0).toLowerCase()){
      if(/^[a-z]/.test(a.charAt(0)) && /^[A-Z]/.test(b.charAt(0))){
        return -1;
      };
      if(/^[a-z]/.test(b.charAt(0)) && /^[A-Z]/.test(a.charAt(0))){
        return 1;
      };
    };
    return a.localeCompare(b);
  };
  arr.sort(sorter);
}
caseSensitiveSort(arr);
console.log(arr);

ผลลัพธ์

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

[
  '1185 Design',
  '3 D Exhibits',
  '44Doors',
  '4Concepts',
  'acceleration',
  'ABC Data'
]