Quiero obtener el total de todos los elementos en el objeto con matriz. por ejemplo
const obj = { one: [1, 4], two: [4, 6] }Debería obtener un total de 4.
Lo intenté
const obj = { one: [1, 4], two: [4, 6] } let total = 0; const objKeys = Object.keys(obj); for (let index = 0; index < objKeys.length; index++) { total += obj[objKeys[index]].length } console.log(total);¿Hay una forma más sencilla de hacer esto?
Podría tomar los valores de su objeto, que sería una matriz de matrices de la siguiente forma:
[[1, 4], [4, 6]] y luego aplane esta matriz con .flat() que da:
[1, 4, 4, 6]; Y luego tome la .length de esa matriz.
Vea el ejemplo a continuación:
const obj = {one: [1, 4],two: [4, 6]}; const res = Object.values(obj).flat().length; console.log(res); Tenga en cuenta que si su objetivo es la eficiencia, puede usar un bucle for...in estándar para hacer un bucle de las claves de su objeto y luego sumar a un total como se muestra a continuación. Esto también evita la sobrecarga de crear matrices adicionales para almacenar las claves/valores:
const obj = {one: [1, 4], two: [4, 6]}; let total = 0; for(const key in obj) total += obj[key].length; console.log(total);reduce() en Object.values(obj) encajaría perfectamente:
const obj = { one: [1, 4], two: [4, 6] } let total = Object.values(obj).reduce((prev, cur) => prev + cur.length, 0); console.log(total); // 4 const obj = { one: [1, 4], two: [4, 6] } let total = 0; Object.keys(obj).forEach(element => { total += obj[element].length } ) console.log(total);