Написать функцию которая выводит отдельно цифры, буквы и символы. проблема с буквами и символами

function symbolAll(str) {
   let arr = str.split(' ').join('');
   console.log(arr);
   let numEl ='';
   let strAll ='';
   let symbol ='';
   for (var index in arr) {
    if ( parseInt(arr[index]) ) {
      numEl = numEl + arr[index];
    } else if (String(arr[index])) {
        strAll = strAll + arr[index];
    введите сюда код
    } else {
        symbol = symbol + arr[index];
    введите сюда код
    }
    
  }
  console.log(numEl);
  console.log(strAll);
  console.log(symbol);


}
symbolAll('sdf!"№jhjh12321sda11wwj jkdjkasjl1')

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

Автор решения: vsemozhebuty

Вам лучше воспользоваться регулярным выражением для этих целей.

Также обратите внимание, что в arr у вас на самом деле строка, так что название переменной обманчиво. И строку проще и надёжнее перебирать циклом for...of (особенно если могут быть символы из дальних секций Юникода):

function symbolAll(str) {
  str = str.split(' ').join('');

  console.log(str);

  let numEl = '';
  let strAll = '';
  let symbol = '';

  for (const character of str) {
    if (parseInt(character)) { // или /\d/.test(character)
      numEl += character;
    } else if (/[a-z]/i.test(character)) {
      strAll += character;
    } else {
      symbol += character;
    }
  }

  console.log(numEl);
  console.log(strAll);
  console.log(symbol);
}

symbolAll('sdf!"№jhjh12321sda11wwj jkdjkasjl1')

→ Ссылка