有条件的连接数组-Javascript

时间:2019-06-18 17:15:20

标签: javascript multidimensional-array javascript-objects

我有一个带有“ 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 个答案:

答案 0 :(得分:1)

仅当该键上尚不存在该对象时,才应创建一个新对象。

此外,您不需要嵌套数组,因此在分配的目标中不需要[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;
});