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

การจัดเรียงสตริงคำตามตัวเลขในแต่ละคำใน JavaScript

ปัญหา

เราต้องเขียนฟังก์ชัน JavaScript ที่รับสตริงที่แทนประโยค ฟังก์ชันควรจัดเรียงประโยคนี้

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

ตัวอย่าง

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

const str = "is2 Thi1s T4est 3a";
const sortByNumber = (str = '') => {
  const findNumber = (s = '') => s
    .split('')
    .reduce((acc, val) => +val ? +val : acc, 0);
  const arr = str.split(' ');
  const sorter = (a, b) => {
    return findNumber(a) - findNumber(b);
  };
  arr.sort(sorter);
  return arr.join(' ');
};
console.log(sortByNumber(str));

ผลลัพธ์

Thi1s is2 3a T4est

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

แต่ละคำมีตัวเลข 1 ตัว (1-9) ใช้ reduce หาตัวเลขในคำ แล้ว sort ตามตัวเลขนั้น สมมติว่าแต่ละคำมีตัวเลขครบ 1-9 ไม่ซ้ำ ถ้ามีคำไม่มีตัวเลข จะเรียงไปหน้าสุด (NaN behavior)