Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Развернуть объект с массивом[n] в n-объектов с элементами массива в качестве свойства (https://javascript.ru/forum/misc/67386-razvernut-obekt-s-massivom%5Bn%5D-v-n-obektov-s-ehlementami-massiva-v-kachestve-svojjstva.html)

prog_f130 15.02.2017 10:35

Развернуть объект с массивом[n] в n-объектов с элементами массива в качестве свойства
 
Доброго дня! Есть ли красивое решение преобразовать
{
    a: 1,
    b: [
        {c:11, d:22},
        {c: 33, d:44}
    ]
}

в
[{
    a: 1, 
    b: {c:11, d:22}
},
{
    a: 1, 
    b: {c:33, d:44}
}]

?

ksa 15.02.2017 10:39

Цитата:

Сообщение от prog_f130
красивое решение

Какие критерии у той красоты? :D

рони 15.02.2017 11:05

prog_f130,
var obj = {
    a: 1,
    b: [
        {c:11, d:22},
        {c: 33, d:44}
    ]
}
var arr = obj['b'].map(function(a) {
  return {
    a: 1,
    b: a
  }
})
alert(JSON.stringify(arr));

prog_f130 15.02.2017 11:18

Ну мне, например, в голову приходит только что то вроде
var obj = {
	a: 1,
	b: [
		{c:11, d:22},
		{c: 33, d:44}
    ]
};
Object.defineProperty(obj , "b", {enumerable : false});

var objArray = [];

obj.b.forEach(function(b, bNo){
    objArray.push(Object.assign({}, obj, b));
})
console.log(objArray);

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

ksa 15.02.2017 11:44

Цитата:

Сообщение от prog_f130
такой объект - результат выборки из БД

Может гораздо красивее будет переделать ту выборку... ;)

Dilettante_Pro 15.02.2017 12:14

рони,
А зачем map(function(a)? В целях конспирации?

рони 15.02.2017 12:24

Dilettante_Pro,
да

prog_f130 15.02.2017 13:25

Цитата:

Сообщение от ksa (Сообщение 444337)
Может гораздо красивее будет переделать ту выборку... ;)

Как вы представляете себе такую выборку из базы mongoDB?

ksa 15.02.2017 14:09

Цитата:

Сообщение от prog_f130
Как вы представляете себе такую выборку из базы mongoDB?

Зачем мне ее представлять? Я с этой БД не работаю... :no:

prog_f130 15.02.2017 14:41

ksa,
Вам как обычно, что угодно лишь бы не по теме.


Часовой пояс GMT +3, время: 22:53.