Допустим, у вас есть такой класс JavaScript
var DepartmentFactory = function(data) {
this.id = data.Id;
this.name = data.DepartmentName;
this.active = data.Active;
}
Допустим, вы создаете несколько экземпляров этого класса и сохраняете их в массиве.
var objArray = [];
objArray.push(DepartmentFactory({Id: 1, DepartmentName: 'Marketing', Active: true}));
objArray.push(DepartmentFactory({Id: 2, DepartmentName: 'Sales', Active: true}));
objArray.push(DepartmentFactory({Id: 3, DepartmentName: 'Development', Active: true}));
objArray.push(DepartmentFactory({Id: 4, DepartmentName: 'Accounting', Active: true}));
Так что теперь у меня есть массив объектов, созданных DepartmentFactory
. Как мне использовать array.sort()
метод для сортировки этого массива объектов по DepartmentName
свойствам каждого объекта?
array.sort()
Метод отлично работает при сортировке массива строк
var myarray=["Bob", "Bully", "Amy"];
myarray.sort(); //Array now becomes ["Amy", "Bob", "Bully"]
Но как мне заставить его работать со списком объектов?
javascript
jdavis
источник
источник
DepartmentFactory
в качестве конструктора, создайте его объекты с помощьюnew DepartmentFactory
, иначе массив будет заполнен кучейundefined
значений.Ответы:
Вы должны сделать что-то вроде этого:
примечание: изменение регистра (на верхний или нижний) обеспечивает сортировку без учета регистра.
источник
return (textA < textB) ? -1 : (textA > textB) ? 1 : 0;
не собираюсь редактировать ваш ответ, оставляя надежду, что я хотя бы вспомню кое-что… :)Для поддержки Unicode:
источник
return a.DepartmentName.toLowerCase().localeCompare(b.DepartmentName.toLowerCase());
localeCompare
это круто и имеет поддержку всех браузеров для первого аргумента. Неплохо!localeCompare
том, чтобы свести на нет работу по управлению логикой сортировки и причудами локали в системе. Если делать регистронезависимый вид нормально для местности, как на английском, это будет сделано для вас:"Z" > 'a' // false
"Z".localeCompare('a') // 1
Если вы хотите отойти от дефолта локал, вы можете отправить по переопределениям вlocales
иoptions
параметрах: developer.mozilla. org / en-US / docs / Web / JavaScript / Reference /…демо: http://jsfiddle.net/diode/hdgeH/
источник
источник
DEMO
источник
Это сортирует их по алфавиту И не учитывает регистр. Это также очень чисто и легко читается: D
источник
'sensitivity': 'base'
, который имеет большое значение в зависимости от вашего приложения в соответствии с MDN .источник
делай это так
источник
Вот простая функция, которую вы можете использовать для сортировки массива объектов по их свойствам; не имеет значения, является ли свойство типом строки или целым числом, оно будет работать.
источник
Вы должны передать функцию, которая принимает два параметра, сравнивает их и возвращает число, поэтому, если вы хотите отсортировать их по идентификатору, вы напишите ...
источник
Попробовав немного и попробовав сделать как можно меньше циклов, я получил следующее решение:
Демо на коде
источник
Простой ответ:
ES6 способ:
Если вам нужно сделать это строчными / прописными буквами и т. Д., Просто сделайте это и сохраните результат в переменной, а затем сравните ее. Пример:
источник