Поиск количества палиндромов в массиве

Мне в задании необходимо:

Найти количество пятизначных палиндромов, являющиеся числами.

Условие задачи мне не до конца было понятно, но решил остановиться на вводе вручную или заранее массива, в каждой ячейке которого вписано 5-значное число.Далее мы выполняем цикл, в котором проходимся по каждому числовому элементу, переворачиваем и сравниваем с оригинальным за счет if и заносим + ,если совпадает,для дальнейшего вывода необходимого количества.

У меня есть код,написанный для случая,когда вводим одно число и проверяется палиндром,но я не знаю,как адаптировать к этому случаю.Пробовал переписать, используя функцию arrayObj.reverse() , но это меняет порядок в самом массиве.

Код,написанный для одного числа:

    XT=prompt("Число " + 'x');
    x=parseInt(XT);
    var TString = x.toString();
    var Reversed = TString.split("").reverse().join("");
    var Back = Number(Reversed);
    document.write("Оригинал " + x);
    document.write('<BR><BR>');
    document.write("Перевернутое " + Back);
    if (Back == x) { alert('Да'); } 
    else {  alert('Нет');  }

Ответы (3 шт):

Автор решения: Armen
если я правильно понял палиндром это если что то перевернуть нечего не поменяется

let arr = ['123321','123','1234a','12345','ab214','12321','null','undefined','54345']
const palindrome = (arr) => {
  let count = 0
  for(let key of arr){
    if(key.length > 5 || key.length < 5){
      continue
    }
    if(parseInt(key).toString().length != key.length){
      continue
    }
    if(+key == +key.split('').reverse().join('')){
      count++
    }
  }
  return count
}
let rezult = palindrome(arr) //возвращает count в rezult
alert(rezult)
console.log(palindrome(arr)) // этот метод выводит в консоль

const имя = () => {} это функция есть другие варианты написания если кратко инкапсулируем логику функции для Поиска количества палиндромов и вызываем где и когда нам нужно 1% из 100% про функцию

key.length длинна одной строки в массиве если больше 5 или меньше 5 то сразу исключаем. в задаче только 5изначные

return count возврошает результат выполнения функции там где он вызывается

alert это метод браузера а console.log есть не только в бразуере и чтобы увидеть результат надо нажать f12 в браузере это консоль разработчика и перейти в console

→ Ссылка
Автор решения: teran

поскольку дана фиксированная длина искомой строки, то проверку можно выполнять только для пар значений 1-5, 2-4, исключая сплит, реверс, конкатенацию, посимвольное сравнение всей длины.

const data = ['123321','123','1234a','12345','ab214','12321','null','undefined','54345'];

let result = data.filter(function(v){
               if(v.length !=5 ) return false;
               if(parseInt(v) != v) return false;
               return (v[0] == v[4] && v[1] == v[3]);
            });

console.log(result);

если хотите сразу количество получить, то filter заменить на reduce.
return false станет return acc, а в конце return acc + ....

→ Ссылка
Автор решения: vp_arth

const data = [
  12345,
  12321,
  32123,
  54321,
];

const res = data.filter(n => (n+'').match(/^(\d)(\d)\d\2\1$/));

console.log(res);

→ Ссылка