Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 07.11.2018, 23:37
Аспирант
Отправить личное сообщение для Marson Посмотреть профиль Найти все сообщения от Marson
 
Регистрация: 14.08.2018
Сообщений: 65

Обобщенная функция сортировки массива
Сделайте обобщенную функцию сортировки массива


var persons = [
{name: "Иван", age: 17},
{name: "Мария", age: 35},
{name: "Алексей", age: 73},
{name: "Яков", age: 12},
]

sort(persons, "age"); //сортирует по возрасту по возрастанию
sort(persons, "name", false); //сортирует по имени по убыванию
Функция позволяет отсортировать любой набор данных по имени поля (второй параметр). Третьим параметром идет необязательный Boolean, который в случае true делает сортировку по возрастанию, в случае false - по убыванию. По умолчанию (без третьего параметра) происходит сортировка по возрастанию.

function byField (field) {
return function (a, b) {
return a[field] > b[field] ? 1 : -1;
};
}
var users = [{
name: "Вася",
surname: 'Иванов',
age: 20
}, {
name: "Петя",
surname: 'Чапаев',
age: 25
}, {
name: "Маша",
surname: 'Медведева',
age: 18
}];
byField();

users.sort(byField('age'));
users.forEach(function(user) {
console.log( user.age);
});


Подскажите, здесь можно без метода sort() сделать?
Ответить с цитированием
  #2 (permalink)  
Старый 07.11.2018, 23:56
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,112

Сообщение от Marson
здесь можно без метода sort() сделать?
можно но зачем? и функция byField должна вернуть и ноль тоже.

Пожалуйста, отформатируйте свой код!

Для этого его можно заключить в специальные теги: js/css/html и т.п., например:
[js]
... ваш код...
[/js]


О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting.
Ответить с цитированием
  #3 (permalink)  
Старый 08.11.2018, 00:11
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,112

Marson,
Сортировка пузырьком, JavaScript
Ответить с цитированием
  #4 (permalink)  
Старый 08.11.2018, 11:53
Аспирант
Отправить личное сообщение для Marson Посмотреть профиль Найти все сообщения от Marson
 
Регистрация: 14.08.2018
Сообщений: 65

Обобщённая функция для ассоциативного массива
function byField (field) {
return function (a, b) {
return a[field] > b[field] ? 1 : -1;
};
}
var users = [{
name: "Вася",
surname: 'Иванов',
age: 20
}, {
name: "Петя",
surname: 'Чапаев',
age: 25
}, {
name: "Маша",
surname: 'Медведева',
age: 18
}];
byField();

users.sort(byField('age'));
users.forEach(function(user) {
console.log( user.age);
});
Ответить с цитированием
  #5 (permalink)  
Старый 08.11.2018, 14:02
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,112

Marson,
спасибо Malleys, взято тут
https://javascript.ru/forum/misc/758...tml#post498107
<script>
function byField(field, order) {
    var collator = new Intl.Collator(["en", "ru"], {
        numeric: true
    });
    order = order ? 1 : -1;
    return function(a, b) {
        return order * collator.compare(a[field], b[field])
    };
}
var users = [{
    name: "Вася",
    surname: 'Иванов',
    age: 20
}, {
    name: "Петя",
    surname: 'Чапаев',
    age: 25
}, {
    name: "Маша",
    surname: 'Медведева',
    age: 18
}];

users.sort(byField('age', true));
users.forEach(function(user) {
    console.log(user.age);
});

  </script>

Последний раз редактировалось рони, 08.11.2018 в 14:05.
Ответить с цитированием
  #6 (permalink)  
Старый 08.11.2018, 21:53
Аспирант
Отправить личное сообщение для Marson Посмотреть профиль Найти все сообщения от Marson
 
Регистрация: 14.08.2018
Сообщений: 65

Спасибо вам!
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подсчет и вывод количества сравнений в методе быстрой сортировки массива kogenate Общие вопросы Javascript 5 11.06.2016 18:33
Анимация сортировки массива LunarionXIV jQuery 3 25.05.2016 01:20
Анимация сортировки массива Sergey111 Общие вопросы Javascript 3 06.05.2012 11:51
Определить из какого элемента массива была вызвана функция BorodinKO Общие вопросы Javascript 2 31.03.2012 12:20
есть ли стандартная функция вывода сожержимого массива что то вроди print_r в PHP??? mazovski Events/DOM/Window 4 20.08.2009 12:52