Maison  >  Questions et réponses  >  le corps du texte

Ajoutez les valeurs en double comptées dans le tableau filtré en utilisant ...new Set

J'ai un tableau avec des valeurs en double que je reçois de l'API, le code suivant utilise la méthode ...new Set() pour obtenir toutes les annotations de Math sans celles en double : < /p>

let notes = [];
if (props.getAllNotes()) {
    const maths = props.getAllNotes().map(item => {
        return item.subjects[0].math_note
    });
    notes = [...new Set(maths)];
}

Voici ce que j'ai dans props.getAllNotes() :

notes = [15,16,10,13,15,16,10,18,11,13,15,16,10,18,11];

Voici ce que j'ai obtenu :

notes = [15,16,10,13,18,11];

Je souhaite ajouter le nombre de chaque note dans le tableau final notes comme :

notes = [{10: 3}, {15: 5}...]

La méthode d'annotation fait cela dans l'objet et je dois le faire dans le tableau final notes où j'utilise la méthode ...new Set() car je mappe à travers celui-ci pour présenter des données

const counts = stars.reduce((acc, value) => ({
    ...acc,
    [value]: (acc[value] || 0) + 1
}), {});

P粉186897465P粉186897465220 Il y a quelques jours396

répondre à tous(1)je répondrai

  • P粉770375450

    P粉7703754502024-04-05 17:54:48

    Après avoir créé l'objet contenant la fréquence de chaque nombre, vous pouvez map ses entrées pour créer le tableau d'objets souhaité.

    let arr = [15,16,10,13,15,16,10,18,11,13,15,16,10,18,11];
    let res = Object.entries(arr.reduce((acc, n) => {
      acc[n] = (acc[n] || 0) + 1;
      return acc;
    }, {})).map(([k, v]) => ({[k]: v}));
    console.log(res);

    répondre
    0
  • Annulerrépondre