У меня есть массив, который имеет список объектов.
каждое значение массива выглядит следующим образом:
Я хочу сортировать имя: elements[ele].options.name
.
это то, что я пытаюсь сделать, но не работаю для меня
var sortedElements = elements.sort(function (a, b) {
return a.options.name - b.options.name
});
for (var ele in sortedElements) {
if (sortedElements.hasOwnProperty(ele)) {
if (!sortedElements[ele].options.outOfNetworkFlag) {
if (sortedElements[ele].options.category === "person") {
assignCount++
}
if (sortedElements[ele].options.category === "unknown") {
unassignCount++
}
}
else {
oonCount++;
}
occupancylist += '<a href="#" class="elementLink"><li style="list-style: none" data-elementid="' + sortedElements[ele].options.elementId + '">' + sortedElements[ele].options.icon.options.html + ' ' + sortedElements[ele].options.name + '</li></a>';
}
}
Пожалуйста, предложите.
Вы можете использовать функцию сортировки
var items = [
{ name: 'saurabh'},
{ name: 'hello'},
{ name: 'jsbee'},
{ name: 'abc'}
];
// sort by name
items.sort(function(a, b) {
var nameA = a.name.toUpperCase(); // ignore upper and lowercase
var nameB = b.name.toUpperCase(); // ignore upper and lowercase
if (nameA < nameB) {
return -1;
}
if (nameA > nameB) {
return 1;
}
// names must be equal
return 0;
});
Используйте функцию sort
следующим образом:
objs.sort((a,b) => (a.options.name > b.options.name) ? 1 : ((b.options.name > a.options.name) ? -1 : 0));
Конечно, вы можете использовать toUpperCase()
(или ниже) в функции сортировки.
objs.sort((a,b) => (a.options.name.toUpperCase() > b.options.name.toUpperCase()) ? 1 : ((b.options.name.toUpperCase() > a.options.name.toUpperCase()) ? -1 : 0));
Вы должны просто использовать Array.prototype.sort
let src = [{options: {name: 'bbb'}}, {options: {name: 'aaa'}}]
src.sort((a, b) => a.options.name > b.options.name ? 1 : -1)
console.log(src);
.localeCompare()
:return a.options.name.localeCompare(b.options.name);