@Misha5
профессиональный бомж

Как упростить данный код?

module.exports = function (names) {
	var numArr;
	var busNames = [];

	for (var i = 0; i <= 9; i++) {
		numArr = names.filter( function(word) {
			var firstLetter = word.split('')[0];
			return firstLetter == i;
		});
        
		numArr.unshift(''+ i);
		if (numArr.length > 1) busNames.push(numArr);
	};


	var letArr = names.filter(function(word) {
		var firstLetter = word.split('')[0];
		return (firstLetter >= 'а' && firstLetter <= 'я') || (firstLetter >= 'А' && firstLetter <= 'Я');
	});
    
	letArr.unshift('А-Я');


	busNames.push(letArr);
	return busNames;
};


Код принимает массив названий и фильтрует их по первому символу.
Буквы к буквам, цифра к цифре.

Спасибо.)
  • Вопрос задан
  • 160 просмотров
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
Object.values(names.reduce((acc, n) => {
  const g = /^\d/.test(n[0]) ? n[0] : /^[А-Я]/i.test(n[0]) ? 'А-Я' : null;
  g && (acc[g] = acc[g] || [ g ]).push(n);
  return acc;
}, {}))
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы