estoy usando el script de la aplicación
Tengo matriz de retorno de la API por este código:
const price= jsonResponce.price.map(obj => [obj[0],obj[1]]); Dame [[30.56, 1.014], [50.44, 1.019], [10.35, 1.081], [10.34, 1.115], [10.40, 2.006]]
No esta matriz puede tener una matriz de 1000 o grande
Ahora quiero sumar todos los objetos en obj[0] usando este código:
Uso el método para ver la deferencia pero nada funciona.
var first= []; var second= 0; price.forEach(function(obj){ first+= obj[0]; second+= obj[1]; }); Logger.log(first); Logger.log(second); Pero dame un resultado así: primero Logger.log(first);
30.5650.4410.3510.3410.40 segundo Logger.log(second); : este método agrega el número 0 después de cualquier obj
01.01401.01901.08101.11502.006Alguna idea para este problema
30.56+50.44+10.35+10.34+10.40 Necesito resultado como: 112.09
Su código funciona bien para mí, después de correcciones mínimas:
const price = [[30.56, 1.014], [50.44, 1.019], [10.35, 1.081], [10.34, 1.115], [10.40, 2.006]] var first = 0; // <-- here var second = 0; price.forEach(obj => { first += +obj[0]; // <-- here second += +obj[1]; // <-- here }); console.log(first); // --> 112.09 console.log(second); // --> 6.2349Puede obtener cuatro dígitos después del punto de esta manera:
var a = 1.23456789; var b = 1234.56789; var c = 16643.59000000003 const dot1000 = x => Math.round(x*10000)/10000; console.log(dot1000(a)); console.log(dot1000(b)); console.log(dot1000(c));Otra implementación (con ceros al final)
var a = 1.23456789 var b = 1234.56789 var c = 16643.59000000003 const dot1000 = x => parseInt(x) + '.' + (x+.00001+'').split('.')[1].slice(0,4) console.log(dot1000(a)) console.log(dot1000(b)) console.log(dot1000(c))Actualizar
JavaScript moderno (ES2017) puede agregar ceros de esta manera:
console.log('123'.padEnd(5,'0')); // 12300https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/padEnd
numerosEnArray = precio.flat()
let sum = 0 numerosEnArray.forEach( numero => suma += numero)
Usando el método Array.prototype.reduce() , esto se vuelve muy fácil:
const result = arr.reduce((total, el)=> { return total + el[0] + el[1] // el = [a, b] }, 0) console.log(result) /// 118.325Déjame saber en los comentarios si esto es lo que quieres o si quieres alguna mejora.