объединить массив с условием - Javascript - PullRequest
0 голосов
/ 18 июня 2019

У меня есть матрица с ключами "seccion", и я хочу присоединить ее к "seccion". Помоги мне здесь я оставлю пример. Я уже благодарен за вашу поддержку.

Сначала у меня есть это, затем я пытаюсь присоединиться к ним:

{0: {seccion: "0", stitulo: "titulo_test1"}, 
 1: {seccion: "0", ssub: "sub_test1"},
 2: {seccion: "1", stitulo: "titulo_test2"},
 3: {seccion: "1", ssub: "sub_test2"}
}

Что я делаю, так это просматриваю все объекты с назначенным классом, но счетчик «i» перезаписывает их:

var secciones={};
$('#formSecciones').find('.secc').each(function(i,s) {
    secciones[`$(s).closest('.dd-item').attr('data-id')] = {};
    secciones[`$(s).closest('.dd-item').attr('data-id')][i] = {};
    secciones[`$(s).closest('.dd-item').attr('data-id')][i][s.name] = s.value;
});

Результат:

{0:{1:{ssub: "sub_test1"}},
 1:{3:{ssub: "sub_test2"}}
}

Вот что я хочу получить:

{0: {ssub: "sub_test1", stitulo: "titulo_test1"},
 1: {stitulo: "titulo_test2", ssub: "sub_test2"}
}

1 Ответ

1 голос
/ 18 июня 2019

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

Кроме того, вам не нужны вложенные массивы, поэтому вам не нужно [i] в качестве цели назначения.

var secciones={};
$('#formSecciones').find('.secc').each(function(i,s) {
    var id = $(s).closest('.dd-item').attr('data-id');
    if (!secciones[id]) {
        secciones[id] = {};
    }
    secciones[id][s.name] = s.value;
});
...