Tengo un código que cuenta la calificación de los deportistas, por ejemplo, si tiene la misma calificación que la persona anterior, tendrá el mismo número de puntuación:
import "./styles.css"; export default function App() { const ratingScore = [100, 90, 90, 90, 80, 70, 60, 50, 50, 50, 50, 40]; const getRatingNum = (rating) => { const ratingScore = []; rating.forEach((el, i, arr) => { if (i === 0) { ratingScore.push(1); return; } if (arr[i - 1] > el) { const newScore = ratingScore.at(-1) + 1; ratingScore.push(newScore); return; } if (arr[i - 1] === el) { const newScore = ratingScore.at(-1); ratingScore.push(newScore); return; } }); return ratingScore; }; return ( <div className="App"> {ratingScore.map((el, i) => { return ( <p key={Math.random() * 10}> {getRatingNum(ratingScore)[i]}. {el} </p> ); })} </div> ); }enlace al ejemplo en vivo: https://codesandbox.io/s/happy-williams-2s5dz?file=/src/App.js
¿Hay un mejor enfoque para contar la calificación de los deportistas?
¿Qué pasa con un enfoque tan simple (pseudocódigo):
let ratings = [1], curr_rating = 1 for (let i = 1; i < ratingScore.length; i++) { if ratingScore[i] < ratingScore[i - 1] { curr_rating++ } ratings.push(curr_rating) }También puedes hacer como:
const getRatingNum = ( rating ) => { let result = [], count = 0; ratingScore.forEach( ( n ) => { if (!result.length || result[result.length - 1].key !== n) result.push( { key: n, count: ++count } ); else result.push( { key: n, count: result[result.length - 1].count } ); } ); return result; };Demo en vivo
import React from 'react'; export default function App() { const ratingScore = [100, 90, 90, 90, 80, 70, 60, 50, 50, 50, 50, 40]; const getRatingNum = ( rating ) => { let result = [], count = 0; ratingScore.forEach( ( n ) => { if (!result.length || result[result.length - 1].key !== n) result.push( { key: n, count: ++count } ); else result.push( { key: n, count: result[result.length - 1].count } ); } ); return result; }; return ( <div className="App"> { getRatingNum(ratingScore).map((o, i) => { return ( <p key={i}>{o.count}. {o.key}</p> ) }) } </div> ); }