string15
@string15
Учусь верстать руками

Как можно переписать это код?

var sortFunc = function sortFunc(data, elem) {
        var attr = elem.getAttribute('name');

        if (attr === 'id' || attr === 'salary') {
            data.sort((a, b) => {
                return +a[attr] > +b[attr] ? 1: -1;
            });
        }

        if (attr === 'user' || attr === 'position' || attr === 'gender') {
            data.sort((a, b) => {
                return a[attr] > b[attr] ? 1: -1;
            });
        }
    };
  • Вопрос задан
  • 184 просмотра
Пригласить эксперта
Ответы на вопрос 2
mannaro
@mannaro Куратор тега JavaScript
Умею профессионально гуглить
// call sortFunc([], elem.getAttribute('name'))
function sortFunc(data, key) {
  return [...data].sort((a, b) => compare(parse(a[key]), parse(b[key])));
}

function parse(val) {
  return isNaN(Number(val)) ? val : Number(val);
}

function compare(a, b) {
  if(a > b) return 1;
  if(a < b) return -1;
  return 0;
}
Ответ написан
Комментировать
sergiks
@sergiks Куратор тега JavaScript
♬♬
Вместо return +a[attr] > +b[attr] ? 1: -1;
можно return +a[attr] - b[attr];

const sortFunc = function sortFunc(data, elem) {
	switch( elem.getAttribute('name')) {
		case 'id':
		case 'salary':
			data.sort((a, b) => +a[attr] - b[attr]);
			break;
		case 'user':
		case 'position':
		case 'gender':
			data.sort((a, b) => a[attr] > b[attr] ? 1 : (a[attr] < b[attr] ? -1 : 0));
			break;
		default:
			throw('Bad attribute');
	}
};
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы
23 нояб. 2024, в 01:31
1000 руб./за проект
23 нояб. 2024, в 00:16
2000 руб./за проект
22 нояб. 2024, в 23:55
3000 руб./за проект