如何在JavaScript中对reduce中的数组求和?
我按照一个例子来使用reduce和求和一些键的值,但是现在,我想求和这个reduce中的一个对象数组的值 这就是我所拥有的:如何在JavaScript中对reduce中的数组求和?,javascript,arrays,vue.js,Javascript,Arrays,Vue.js,我按照一个例子来使用reduce和求和一些键的值,但是现在,我想求和这个reduce中的一个对象数组的值 这就是我所拥有的: groupConceptos(){ var result = []; this.auxTablaPrincipal.reduce((res, value, index) => { var aux = [];
groupConceptos(){
var result = [];
this.auxTablaPrincipal.reduce((res, value, index) => {
var aux = [];
value.conceptoImpuesto.reduce((ant, nuevo) => {
if(!ant[nuevo.nombre]){
ant[nuevo.nombre] = {
base: 0,
importe: 0,
impuesto: nuevo.impuesto,
local: nuevo.local,
nombre: nuevo.nombre,
tasaOcuota: nuevo.tasaOcuota,
tipoFactor: nuevo.tipoFactor,
tipoImpuesto: nuevo.tipoImpuesto
};
aux.push(ant[nuevo.nombre])
}
ant[nuevo.nombre].base += parseFloat(nuevo.base);
ant[nuevo.nombre].importe += parseFloat(nuevo.importe);
return ant
}, {});
if(!res[value.descripcion]){
res[value.descripcion] = {
conceptoImpuesto: aux,//value.conceptoImpuesto,
cantidad: 0,
claveInterna: value.claveInterna,
claveProdServ: value.claveProdServ,
claveUnidad: value.claveUnidad,
descripcion: value.descripcion,
descuento: 0,
importe: 0,
subtotal: 0,
porcentajeIva: value.porcentajeIva,
precioPublico: value.precioPublico,
productoId: value.productoId,
sumaImporte: 0,
totalIva: value.totalIva,
totalPagado: value.totalPagado,
unidad: value.unidad,
valorUnitario: value.valorUnitario
};
result.push(res[value.descripcion])
}
res[value.descripcion].cantidad += parseInt(value.cantidad);
res[value.descripcion].descuento += parseInt(value.descuento);
res[value.descripcion].importe += parseFloat(value.importe);
res[value.descripcion].subtotal += parseFloat(value.subtotal);
res[value.descripcion].sumaImporte += parseInt(value.sumaImporte);
return res
}, {});
this.tablaPrincipal = result;
this.tablaPrincipal.forEach(element => {
element.conceptoImpuesto.forEach(concepto => {
this.auxConceptosImpuestos.push({
base: concepto.base,
importe: concepto.importe,
impuesto: concepto.impuesto,
local: concepto.local,
nombre: concepto.nombre,
tasaOcuota: concepto.tasaOcuota,
tipoFactor: concepto.tipoFactor,
tipoImpuesto: concepto.tipoImpuesto
})
});
});
},
*this.auxtablabrincipal是一个数组,我使用它来减少并分配给this.tablePrincipal
this.tablablincipal
是this.auxtablablincipal减少的结果。
conceptoImpuesto
是一个对象数组,我需要对如下值求和:res[value.description].cantidad+=parseInt(value.cantidad)代码>
因此,我使用相同的方法对this.auxTablaPrincipal
的reduce的value.conceptoImpuesto
进行约简和求和,然后将aux
数组分配给this.auxTablaPrincipal
的conceptoImpuesto
但这种方法不起作用
如何在reduce方法中对数组的值求和
编辑
例如,如果一个新值与其在数组中的值相同,我将使用reduce to group value。所以我想对conceptoImpuesto
数组的值求和,以应用conceptoImpuesto的和
在图中,“canatidad”的值为2。因此,数组conceptoImpuesto
的“base”和“import”的值相加,就像我在代码中所做的那样,因此您要做的是用0初始化reduce,然后从每个数组项添加到reduce中。例如,如果您有这样一个数组:
const employees = [
{ name: 'Bob', yearsExperience: 5 },
{ name: 'Juanita', yearsExperience: 10 },
{ name: 'Shen', yearsExperience: 12 }
]
如果您想要累积团队经验,您可以这样做:
employees.reduce((accumulator, value) => {
accumulator += value.yearsExperience
return accumulator
}, 0)
reduce
返回一个值,因此您可能需要使用它(将其存储到变量中,或返回它,…)。您能给出一个数组示例和预期结果吗?@ibrahimmahrir我用一个可能重复的示例更新问题。。。那么预期的输出呢?是的,但是它的值之和必须是一个数组?和是一个数组吗?你的意思是你需要做一组转换吗?就像我问题中的代码一样res[value.description].cantidad+=parseInt(value.cantidad)代码>。。。构建一个数组并求和值,但在数组内部有另一个数组,该数组具有相加的值,因此,构建一个数组以分配给this.auxtablabrincipal
的conceptoImpuesto
,最后分配给this.tablabrincipal thisthis.tablabrincipal=result
<代码>结果
是带有reduce的变量