@3tonua

Как сделать сортировку объектов внутри массива по количеству ключей?

Есть к примеру массив
var Array = [{x : 'x', y : 'y'}, {x : 'x'}, {x : 'x', y : 'y', z : 'z'}];

Как его правильно отсортировать, чтобы на выходе получилось вот так?
[ {x : 'x'}, {x : 'x', y : 'y'}, {x : 'x', y : 'y', z : 'z'}]
  • Вопрос задан
  • 222 просмотра
Решения вопроса 2
search
@search
мама говорит что я особенный
Array = Array.sort(function(a, b) {
  return Object.keys(a).length - Object.keys(b).length;
});


P.S.
Array - это зарегистрированный конструктор в JS. Лучше не давать переменным названия как Object, Array, String и т.п. Иначе всё поломается.
Ответ написан
Комментировать
kulakoff
@kulakoff
Vue.js developing
var arr = [{x : 'x', y : 'y'}, {x : 'x'}, {x : 'x', y : 'y', z : 'z'}];
arr = arr.sort((a, b) => Object.keys(a).length - Object.keys(b).length)
console.log(arr)
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
array.map(item => ({...item, keysLength: Object.keys(item).length}))
    .sort((a,b) => a.keysLength - b.keysLength)
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы