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

กรองอาร์เรย์ให้เหลือเฉพาะพาลินโดรม - JavaScript

กรองอาร์เรย์เก็บเฉพาะเอลีเมนต์ที่เป็นพาลินโดรม (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 หรือไม่