【发布时间】:2021-05-04 05:05:57
【问题描述】:
我在创建对象数组时遇到问题。问题是您应该只创建 2 个对象,但最终创建了 8 个对象,因为属性的每个值都插入到一个新对象中。 我有一个称为列的对象数组,它是动态的,因为值和属性正在变化
我需要的是根据行属性的值创建对象,例如只包含相同行值的对象。
example: [
{ string1: 'CONTRAPARTIDA',string2: 'NOMBRE',string3: null, number1: 'Orden', number2: 'VALOR ENV.' number3: null}, object with row value = 1
{ string1: 'CONTRAPARTIDA',string2: 'NOMBRE',string3: null, number1: 'Orden', number2: 'VALOR ENV.' number3: null}, //object with row value = 2
使用这段代码,我尝试创建我的 2 个对象,但不幸的是,创建的对象比预期的要多。
for(let a in columnas){
//I can't do this validation because as the column array is dynamic I don't know how many rows come in //the array.
//if(columnas[a].fila ==1)
arrayFinal.push({
// validations to match the campoDb with the new array property and insert the value
string1: (columnas[a].campoDb==='STRING1' ? columnas[a].nombre : null),
string2:(columnas[a].campoDb==='STRING2' ? columnas[a].nombre : null),
string3: null,
number1: (columnas[a].campoDb==='NUMBER1' ? columnas[a].nombre : null),
number2:(columnas[a].campoDb==='NUMBER2' ? columnas[a].nombre : null),
number3: null,
});
但是作为图像中的附件,创建了 8 个对象,并且只填充了一个属性,正确的做法是只有 2 个具有这些值的对象。
Example: [
{ string1: 'CONTRAPARTIDA',string2: 'NOMBRE',string3: null, number1: 'Orden', number2: 'VALOR ENV.' number3: null},
{ string1: 'CONTRAPARTIDA',string2: 'NOMBRE',string3: null, number1: 'Orden', number2: 'VALOR ENV.' number3: null},
const columnas = [
{ nombre: 'ORDEN', fila: 1, campoDb: 'NUMBER1' },
{ nombre: 'CONTRAPARTIDA', fila: 1, campoDb: 'STRING1' },
{ nombre: 'NOMBRE', fila: 1, campoDb: 'STRING2' },
{ nombre: 'VALOR ENV.', fila: 1, campoDb: 'NUMBER2' },
{ nombre: 'ORDEN', fila: 2, campoDb: 'NUMBER1' },
{ nombre: 'CONTRAPARTIDA', fila: 2, campoDb: 'STRING1' },
{ nombre: 'NOMBRE', fila: 2, campoDb: 'STRING2' },
{ nombre: 'VALOR ENV.', fila: 2, campoDb: 'NUMBER2' },
];
let arrayFinal = [];
for(let a in columnas){
if(columnas[a].fila ==1) //no puedo hacer esta validacion xq como el arreglo columna es dinamico no se cuantas filas vengan en el areglo
arrayFinal.push({
string1: (columnas[a].campoDb==='STRING1' ? columnas[a].nombre : null),
string2:(columnas[a].campoDb==='STRING2' ? columnas[a].nombre : null),
string3: null,
number1: (columnas[a].campoDb==='NUMBER1' ? columnas[a].nombre : null),
number2:(columnas[a].campoDb==='NUMBER2' ? columnas[a].nombre : null),
number3: null,
});arrayFinal
}
console.log(arrayFinal);
我需要一些解决方案或建议,说明我可以做什么或可以从我的代码中更改什么,以使我想做的事情更容易。
【问题讨论】:
标签: javascript for-loop matrix javascript-objects