เรามีอาร์เรย์ของสตริงที่แต่ละตัวมีตัวเลขหนึ่งหรือมากกว่าหนึ่งตัวแบบนี้:
const arr = ['di5aster', 'ca1amity', 'cod3', 'ho2me3', 'ca11ing'];
เราต้องเขียนฟังก์ชันจัดเรียงที่จัดเรียงอาร์เรย์นี้ในลำดับเพิ่มขึ้นของตัวเลขที่อยู่ในสตริง ลำดับที่ถูกต้องจะเป็น:
const output = ['ca1amity', 'cod3', 'di5aster', 'ca11ing', 'ho2me3'];
มาเขียนโค้ดสำหรับปัญหานี้กัน:
ตัวอย่างโค้ด
const arr = ['di5aster', 'ca1amity', 'cod3', 'ho2me3', 'ca11ing'];
const filterNumber = str => {
return +str
.split("")
.filter(el => el.charCodeAt() >= 48 && el.charCodeAt() <= 57)
.join("");
};
const sorter = (a, b) => {
return filterNumber(a) - filterNumber(b);
};
arr.sort(sorter);
console.log(arr);
ผลลัพธ์
ผลลัพธ์ในคอนโซลจะเป็นดังนี้:
['ca1amity', 'cod3', 'di5aster', 'ca11ing', 'ho2me3']