Tuve 2 casos de prueba como estos (y tal vez otro), algunos arreglos como esos:
input: [{ name: 'Javascript', coin: 1000 }, { name: 'PHP', coin: 1200 }, { name: 'Dart', coin: 1400 }, { name: 'Ruby', coin: 1600 }, { name: 'ReactJS', coin: 1600 }, { name: 'React-Native', coin: 1800 }, ]o
intput: [{ name: 'Javascript', coin: 1000 }, { name: 'PHP', coin: 1200 }, { name: 'Dart', coin: 1400 }]Debo escribir un programa javascript para encontrar la suma de la moneda, por ejemplo, la primera es 8600, la segunda es 3600.
Debo usar la función "reducir".
Aquí esta el mio
function run(courses) { var i = 0; var totalcoin = courses.reduce (function(total, course) { i++; return total + course.coin; },0);Pero me dijo que tenía el error: Error: esperado indefinido igual a 8600.
¿Podría darme algunas ideas para este problema? Muchas gracias por tu tiempo.
¿Quiso decir algo como esto?
su función run está incompleta, debería devolver el valor totalCoins después de reducir la matriz, y necesita ejecutar la función para obtener el valor
const array_first = [{ name: 'Javascript', coin: 1000 }, { name: 'PHP', coin: 1200 }, { name: 'Dart', coin: 1400 }, { name: 'Ruby', coin: 1600 }, { name: 'ReactJS', coin: 1600 }, { name: 'React-Native', coin: 1800 }] const array_second = [{ name: 'Javascript', coin: 1000 }, { name: 'PHP', coin: 1200 }, { name: 'Dart', coin: 1400 } ]; const sum_first = run(array_first); const sum_second = run(array_second); console.log(`sum of coins in first array => ${sum_first}`); console.log(`sum of coins in second array => ${sum_second}`); function run(array) { const sum = array.reduce((acc, curr) => acc + curr.coin, 0); return sum; }Material de referencia : Array.prototype.reduce()
La función "reducir", como las otras funciones de matriz, es en sí misma un proceso de bucle -> por lo que no es necesario tener una variable iteradora. Entonces, algo como
const sumOfCoins = courses.reduce((accumulator, course) => accumulator + course.coin, 0);debería darte la respuesta correcta. La función reduce pasa por todos los elementos de la matriz (curso). El acumulador representa el valor calculado actual. Entonces, en su caso, el acumulador se "arrastra", cada elemento se agrega a la suma anterior. El 0 al final es el valor inicial, por lo que el acumulador será 0 para la primera operación. El valor de retorno de Courses.Reduce es el último valor calculado.
Un bucle forEach simple puede ayudarte en este caso:
Básicamente, debe recorrer cada elemento de la matriz y agregar/concatenar el valor de la moneda en ese elemento a una variable.
var input = [ { name: 'Javascript', coin: 1000 }, { name: 'PHP', coin: 1200 }, { name: 'Dart', coin: 1400 }, { name: 'Ruby', coin: 1600 }, { name: 'ReactJS', coin: 1600 }, { name: 'React-Native', coin: 1800 }, ] function sumOfCoins(coinsArray){ let totalCoins = 0; input.forEach((element)=>{ totalCoins += element.coin; }) console.log(totalCoins); // 8600 } sumOfCoins(input);