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

การจัดเรียงอาร์เรย์น้ำหนักตามหน่วย G, KG, T ใน JavaScript

ปัญหา

เราต้องเขียนฟังก์ชัน JavaScript ที่รับอาร์เรย์ของสตริงที่มีน้ำหนักพร้อมหน่วย 3 แบบ: กรัม (G), กิโลกรัม (KG) และตัน (T) ฟังก์ชันควรจัดเรียงอาร์เรย์จากน้ำหนักน้อยไปมาก

ตัวอย่าง

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

const arr = ['1456G', '1KG', '.5T', '.005T', '78645G', '23KG'];
const arrangeWeights = (arr = []) => {
  const sorted = (w) => {
    if (w.slice(-2) === 'KG') {
      return +w.slice(0, -2) * 1;
    } else if (w.slice(-1) === 'T') {
      return +w.slice(0, -1) * 1000;
    } else {
      return +w.slice(0, -1) * 0.001;
    }
  };
  return arr.sort((a, b) => sorted(a) - sorted(b));
};
console.log(arrangeWeights(arr));

ผลลัพธ์

[ '1KG', '1456G', '.005T', '23KG', '78645G', '.5T' ]

คำอธิบายเพิ่มเติม

โค้ดแปลงทุกค่าเป็นกิโลกรัมเพื่อเปรียบเทียบ: G ÷ 1000, KG × 1, T × 1000 ควรระวังกรณีสตริงขึ้นต้นด้วยจุดทศนิยม เช่น '.5T' ซึ่ง parseFloat จัดการได้ถูกต้อง