Хранить объекты в массиве в JavaScript - PullRequest
0 голосов
/ 03 февраля 2019

У меня есть несколько объектов в объекте obj, которые я хочу сохранить в массиве. Я реализую push () для этого случая, но он не дает правильного вывода.Может кто-нибудь предложить подход для реализации того же.

var obj ={
car:{
maruti: {wheels: 4, mileage:15},
dezire: {wheels: 4, mileage:19}
    },

bike:{
suzuki:{wheels: 2, mileage:45},
honda:{wheels: 2, mileage:85}
     } 
         }

Ожидаемый результат:

var obj ={
car:[{
maruti: {wheels: 4, mileage:15},
dezire: {wheels: 4, mileage:19}
    }],

bike:[{
suzuki:{wheels: 2, mileage:45},
honda:{wheels: 2, mileage:85}
     } 
         }]

Ответы [ 3 ]

0 голосов
/ 03 февраля 2019

Вы можете уменьшить ключи объекта до объекта со значением в массиве, например:

const obj = {car:{maruti:{wheels:4,mileage:15},dezire:{wheels:4,mileage:19}},bike:{suzuki:{wheels:2,mileage:45},honda:{wheels:2,mileage:85}}},

res = Object.keys(obj).reduce((acc, key) => ({...acc, [key]:[obj[key]]}), {});
console.log(res);

Тем не менее, обратите внимание, что объекты не сохраняют гарантированный порядок, и, следовательно, результирующий объект может быть в другом порядке по сравнению с вашим вводом.

0 голосов
/ 03 февраля 2019

Просто используйте Object.keys() вот так:

 

var obj ={
car:{
maruti: {wheels: 4, mileage:15},
dezire: {wheels: 4, mileage:19}
},

bike:{
suzuki:{wheels: 2, mileage:45},
honda:{wheels: 2, mileage:85}
 } 
     }

Object.keys(obj).forEach(key => obj[key] = [obj[key]]);

console.log(obj);

И для сортировки автомобилей по пробегу:

 

var obj ={
car:{
maruti: {wheels: 4, mileage:15},
dezire: {wheels: 4, mileage:19}
},

bike:{
suzuki:{wheels: 2, mileage:45},
honda:{wheels: 2, mileage:85}
 } 
     }

Object.keys(obj).forEach(key => obj[key] = [obj[key]]);

Object.keys(obj).forEach(key => obj[key].sort((a, b) => a.mileage - b.mileage));

console.log(obj);
0 голосов
/ 03 февраля 2019

просто вам нужно поместить [] вокруг вашего значения obj.

var obj ={
car:{
    maruti: {wheels: 4, mileage:15},
     dezire: {wheels: 4, mileage:19}
},

bike:{
  suzuki:{wheels: 2, mileage:45},
  honda:{wheels: 2, mileage:85}
     } 
}
for(let key in obj){
	obj[key] = [obj[key]]
}
console.log(obj)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...