ปัญหา
เราต้องเขียนฟังก์ชัน 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)