Tengo una tarea para escribir una función que devuelve el valor promedio de los números pares de una matriz. Si no hay números pares en la matriz, devuelve nulo. Aquí están las matrices y el resultado esperado: [1,2,3,4,5,6,7] - debería devolver "4" y [1,1,1,1] - debería devolver "nulo". ¿Dónde debo poner la condición para nulo? Probé diferentes opciones, pero nada funciona, pero tal vez mi código sea incorrecto.
function getEvenAverage(array) { const even = array.filter(function (element) { return element % 2 === 0 }); const sum = even.reduce(function (sum, element) { return (sum + element); }); return sum / even.length; } const result1 = getEvenAverage([1,2,3,4,5,6,7]) console.log(result1); const result2 = getEvenAverage([1,1,1,1]) console.log(result2);También puede lograr esto en 1 bucle:
map ) para contener valoresmap function getEvenAverage(array) { const map = array.reduce((acc, item) => { if (item % 2 === 0) { return { total: acc.total + item, length: acc.length + 1 } } return acc }, { total: 0, length: 0 }); return map.length ? map.total / map.length : null } const result1 = getEvenAverage([1, 2, 3, 4, 5, 6, 7]) console.log(result1); const result2 = getEvenAverage([1, 1, 1, 1]) console.log(result2);revisa este código
function getEvenAverage (arr) { let temp = []; let sum = 0; let count = 0; arr.map(item => { if(item % 2 === 0) { temp = [...temp, item] } }) temp.map(item => { sum += item; count +=1; }) if(temp.length ===0) { return null } return sum/count; }Necesitas hacer los siguientes cambios:
null como valor inicial para Array.prototype.reducesum === null return sum , de lo contrario, calcule un valor promedioPuede encontrar el código con el cambio aplicado a continuación
function getEvenAverage(array) { const even = array.filter(function (element) { return element % 2 === 0 }); const sum = even.reduce(function (sum, element) { return (sum + element); }, null); return sum === null ? sum : sum / even.length; } const result1 = getEvenAverage([1,2,3,4,5,6,7]) console.log(result1); const result2 = getEvenAverage([1,1,1,1]) console.log(result2);