กรองอาร์เรย์เก็บเฉพาะเอลีเมนต์ที่เป็นพาลินโดรม (Palindrome) ทั้งตัวเลขและสตริง
ตัวอย่าง
['carecar', 1344, 12321, 'did', 'cannot'] → [12321, 'did']
ตัวอย่างโค้ด
const isPalindrome = el => {
const str = String(el);
let i = 0, j = str.length - 1;
while (i < j) {
if (str[i] !== str[j]) return false;
i++; j--;
}
return true;
};
const findPalindrome = arr => arr.filter(el => isPalindrome(el));
console.log(findPalindrome(['carecar', 1344, 12321, 'did', 'cannot']));
ผลลัพธ์
[ 12321, 'did' ]
เวอร์ชันสั้น (One-liner)
const findPalindrome = arr =>
arr.filter(el => String(el) === [...String(el)].reverse().join(''));
แปลงเป็น String ทุกประเภท แล้วเช็คว่าเท่ากับ Reverse หรือไม่