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

จัดเรียงสตริงที่มีจุดทศนิยมใน JavaScript

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

const arr = [
  '.0', '.1', '.2', '.4', '.2.1', '.3', '.4.1', '.5', '.5.1.5'
];

เราต้องเขียนฟังก์ชัน JavaScript ที่รับอาร์เรย์ดังกล่าว ฟังก์ชันควรจัดเรียงอาร์เรย์ในลำดับเพิ่มขึ้น (ตามที่คนทั่วไปมองเห็น) หมายความว่าสตริงที่มี '.0' ตามด้วย '.1', ตามด้วย '.2', และต่อไป ดังนั้น หลังจากจัดเรียงแล้ว อาร์เรย์ควรเป็นแบบนี้:

const output = [
  '.0', '.1', '.2.1', '.2', '.3', '.4', '.4.1', '.5', '.5.1.5'
];

ตัวอย่าง

โค้ดสำหรับทำสิ่งนี้คือ:

const arr = [
  '.0', '.1', '.2', '.4', '.2.1', '.3', '.4.1', '.5', '.5.1.5'
];
const compare = (a, b) => {
  if (a === b) {
    return 0
  };
  const aArr = a.split("."), bArr = b.split(".");
  for (let i = 0; i < Math.min(aArr.length, bArr.length); i++) {
    if (parseInt(aArr[i]) < parseInt(bArr[i])) {
      return -1
    };
    if (parseInt(aArr[i]) > parseInt(bArr[i])) {
      return 1
    };
  }
  if (aArr.length < bArr.length) {
    return -1
  };
  if (aArr.length > bArr.length) {
    return 1
  };
  return 0;
};
arr.sort(compare);
console.log(arr);

ผลลัพธ์

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

[
  '.0', '.1',
  '.2', '.2.1',
  '.3', '.4',
  '.4.1', '.5',
  '.5.1.5'
]