const ob = { a: 1, b: { c: 3, d: 6, e: { f: { g: 3, h: { i: 5, j: { k: 7 } } } } } };¿Algún método para resolver este código?
No tengo idea de cómo resolver este código.
Para la entrada mencionada anteriormente, esperaría un resultado de 1 + 3 + 6 + 3 + 5 + 7 = 25. Entonces, lo que quiero devolver de una función sumObject (ob) es: 25
Puedes intentar reduce con recursividad
La condición para la suma es
resultsumObject recursivamente con el result actual const ob = { a: 1, b: { c: 3, d: 6, e: { f: { g: 3, h: { i: 5, j: { k: 7 } } } } } }; function sumObject(data, result = 0) { return Object.values(data).reduce((sum, value) => typeof value === 'number' ? sum + value : sumObject(value, sum), result) } console.log(sumObject(ob))Si no entiende algunas de las otras respuestas, esta es una solución más fácil de entender:
function sumObject(obj){ let result = 0; for(let i of Object.values(obj)){ //we iterate through all values in obj if(typeof i == "number"){ //if the current value of i is a number result+=i; //then add that to the result } else { //otherwise, it will be an object result+=sumObject(i); //so we call the function on itself to iterate over this new object } } return result; //finally, we return the total } console.log(sumObject(ob)); const ob = { a: 1, b: { c: 3, d: 6, e: { f: { g: 3, h: { i: 5, j: { k: 7 } } } } } }; const sum = data => Object .keys(data) .reduce((a,b) => a + (typeof(s = data[b]) == "number" ? s : sum(s)), 0); console.log(sum(ob))