Как я могу отсортировать массив объектов, который имеет нулевые и неопределенные значения, используя javascript. Моя цель - сначала показать элементы, у которых есть свойство «jobTitle», упорядочить их по рейтингу, затем элементы без «jobTitle», упорядоченные по рейтингу. Данные:
data = [
{name: 'John', rating: null},
{name: 'Ethel', rating: 1.34, jobTitle: 'engineer'},
{name: 'Abba', rating: 5.44},
{name: 'Harry', rating: 0.44, jobTitle: 'plumber'}
]
После того, как данные отсортированы по jobTitle, а затем по рейтингу, они должны выглядеть следующим образом:
[
{name: 'Ethel', rating: 1.34, jobTitle: 'engineer'},
{name: 'Harry', rating: 0.44, jobTitle: 'plumber'},
{name: 'Abba', rating: 5.44},
{name: 'John', rating: null}
]
Я пробовал много вариантов, таких как:
data.sort(function (a, b) {
var x = a[key]; var y = b[key];
return ((x > y) ? -1 : ((x < y) ? 1 : 0));
});
но он не работал для неопределенных и нулевых значений. Я не хочу использовать некачественные решения, такие как создание новых массивов, заполнение данными и их объединение. Я хочу добиться этого одним способом, если это возможно.
РЕДАКТИРОВАТЬ
В общем ответе должны сначала показываться те, у кого jobTitle упорядочен по рейтингу И тогда те, у кого нет jobTitle ТАКЖЕ упорядочены по рейтингу.