Por favor, ayúdenme con el siguiente lío de cadenas/arreglos.
La función asíncrona devuelve lo siguiente
[ '0 0 0.33 0.019 0 0 0.173 0.009', '0 0.133 0 0 0 0 0 0.05', '0.1 0.11 0.5 0 0 0 0 0.333', 'COMPLETO' ]
¿Cómo encuentro un promedio de los números de cada cadena y cómo inserto los números de cada cadena en su propia tabla html?
Probé una combinación de métodos .toString().split() y los bucles a continuación, pero no llegué a ninguna parte
const parametersOfCRWs = await getCRWs(idle, "worker:1"); let splits = parametersOfCRWs.toString().split(","); let arr = ""; let sum = 0; let count = 0; for (let i = 0; i < splits.length-1; i++) { arr = splits[i].split(" "); for (let j = 0; j < arr.length; j++) { sum = sum + Number(arr[j]); console.log(arr[i]); } avg = sum / 8; //always 8 numbers in every string console.log(avg);el número promedio resultó ser incorrecto
Puede dividir las cadenas, agregar todos los valores y obtener el resultado para el mapeo.
const data = ['0 0 0.33 0.019 0 0 0.173 0.009', '0 0.133 0 0 0 0 0 0.05', '0.1 0.11 0.5 0 0 0 0 0.333', 'COMPLETE'], result = data.map(s => s === 'COMPLETE' ? s : s.split(' ').reduce((s, v) => s + +v, 0) / 8 ); console.log(result);Esto funciona incluso si tiene tokens inesperados en sus cadenas de entrada. Vea el fragmento a continuación.
const input = [ "0 0 0.33 0.019 0 fssd 0 dfssd 0.173 0.009", "0 0.133 0 0 0 0 sdfsd 0 0.05", "0.1 0.11 0.5 dsfsd 0 0 dsfsd 0 0 0.333", "COMPLETE", ]; const output = input.map((str) => { const { sum, count } = str.split(" ").reduce( (avg, value) => { const possibleFloat = Number.parseFloat(value); if (isNaN(possibleFloat)) return avg; avg.sum += possibleFloat; avg.count++; return avg; }, { sum: 0, count: 0 } ); return sum / count; }); console.log(output);Puede hacer algo como: (obtenga sus propios datos primero, esta variable de datos es solo un ejemplo)
let data = [ "0 0 0.33 0.019 0 0 0.173 0.009", "0 0.133 0 0 0 0 0 0.05", "0.1 0.11 0.5 0 0 0 0 0.333", "COMPLETE" ] data = data.map(e=> { if(e !== 'COMPLETE') { let average = 0 e.split(' ').forEach(r => {average +=Number(r)}) average = average/e.split(' ').length return average } return 'COMPLETE' }) console.log(data)producción:
[ 0.066375, 0.022875, 0.130375, "COMPLETE" ]