Как изменить порядок объектов внутри объекта по значению

Есть объект:

const input = {
      nickname: {value: 'nick', id: 1},
      city: {value: null, id: 2},
      country: {value: 'Russia', id: 3},
      postal_code: {value: '', id: 4},
    };

Нужно отсортировать объект так, чтобы на выходе получилось такое:

 const output = {
      nickname: {value: 'nick', id: 1},
      country: {value: 'Russia', id: 3},
      postal_code: {value: '', id: 4},
      city: {value: null, id: 2},
    };

Сначала должны быть объекты с value, а дальше объекты с value '' и null. Заранее спасибо за помощь.


Ответы (1 шт):

Автор решения: Aziz Umarov

Как то так

const input = {
      nickname: {value: 'nick', id: 1},
      city: {value: null, id: 2},
      country: {value: 'Russia', id: 3},
      postal_code: {value: '', id: 4},
    };
    
const output = Object.fromEntries( 
                 Object.entries(input).sort(
                  (a,b) => {
                       if (a[1].value != null && b[1].value != null) return 0;
                       if (a[1].value == null) return 1;
                       if (b[1].value == null) return -1;}
                  )
               );
    
console.log(output)

→ Ссылка