J'ai un problème avec la création d'un tableau filtré. J'ai une variable appelée _xData qui est un groupe de données; Je fais pour le cycle pour voir toutes les lignes de ma variable et le journal est similaire à ceci:

  • {IdQuiz: "1", Blocco: "00451", Domanda: "01", Risposta: "TRUE", Capitolo: "00",…}
  • {IdQuiz: "2", Blocco: "00451", Domanda: "02", Risposta: "FALSE", Capitolo: "00",…}
  • {IdQuiz: "3", Blocco: "00451", Domanda: "03", Risposta: "FALSE", Capitolo: "00",…}
  • IdQuiz: "4", Blocco: "00450", Domanda: "01", Risposta: "TRUE", Capitolo: "00",…}
  • {IdQuiz: "5", Blocco: "00450", Domanda: "02", Risposta: "FALSE", Capitolo: "00",…}
  • {IdQuiz: "6", Blocco: "00450", Domanda: "03", Risposta: "FALSE", Capitolo: "00",…}
  • {IdQuiz: "7", Blocco: "00452", Domanda: "01", Risposta: "TRUE", Capitolo: "00",…}
  • {IdQuiz: "8", Blocco: "00452", Domanda: "02", Risposta: "FALSE", Capitolo: "00",…}
  • {IdQuiz: "9", Blocco: "00452", Domanda: "03", Risposta: "FALSE", Capitolo: "00",…} ...

Ce journal continue pendant 1545 lignes.

Je fais cela pour filtrer un tableau dans lequel il y a trois lignes avec le même "Blocco",

J'ai essayé comme ça mais je n'ai eu que la première occurrence:

 for (var i = 0; i < _xData.length; i++) {
        blocco = _xData[i].Blocco;
        console.log(_xData[i]);
        if (blocco == _xData[k].Blocco) {
            //console.log(_xData[i]);
            tot = array.push(_xData[i]);

        }
    }console.log("ARRAY =", array);

Dans ce journal, j'ai:

  • {IdQuiz: "1", Blocco: "00451", Domanda: "01", Risposta: "TRUE", Capitolo: "00",…}
  • {IdQuiz: "2", Blocco: "00451", Domanda: "02", Risposta: "FALSE", Capitolo: "00",…}
  • {IdQuiz: "3", Blocco: "00451", Domanda: "03", Risposta: "FALSE", Capitolo: "00",…}

Comment puis-je obtenir tous les tableaux (545) déjà divisés en triplés et filtrés par "Blocco"?

0
Massimo Pisano 26 août 2020 à 12:13

3 réponses

Meilleure réponse

Voici une façon de procéder:

const _xData = [
    { IdQuiz: "1", Blocco: "00451", Domanda: "01", Risposta: "TRUE", Capitolo: "00" },
    { IdQuiz: "2", Blocco: "00451", Domanda: "02", Risposta: "FALSE", Capitolo: "00" },
    { IdQuiz: "3", Blocco: "00451", Domanda: "03", Risposta: "FALSE", Capitolo: "00" },
    { IdQuiz: "4", Blocco: "00450", Domanda: "01", Risposta: "TRUE", Capitolo: "00" },
    { IdQuiz: "5", Blocco: "00450", Domanda: "02", Risposta: "FALSE", Capitolo: "00" },
    { IdQuiz: "6", Blocco: "00450", Domanda: "03", Risposta: "FALSE", Capitolo: "00" },
    { IdQuiz: "7", Blocco: "00452", Domanda: "01", Risposta: "TRUE", Capitolo: "00" },
    { IdQuiz: "8", Blocco: "00452", Domanda: "02", Risposta: "FALSE", Capitolo: "00" },
    { IdQuiz: "9", Blocco: "00452", Domanda: "03", Risposta: "FALSE", Capitolo: "00" }
];

const array = Object.values(_xData.reduce((acc, cur) => {
    if (acc[cur.Blocco]) {
        acc[cur.Blocco].push(cur);
    } else {
        acc[cur.Blocco] = [cur];
    }
    return acc;
}, {}));

console.log("ARRAY =", array);
0
Hao Wu 26 août 2020 à 09:22

Vous pouvez obtenir le résultat souhaité comme ceci

const groupBy = function(array, key) {
  return array.reduce(function(accumulator, item) {
    const groupValue = item[key];
    accumulator[groupValue] = accumulator[groupValue] || [];
    accumulator[groupValue].push(item);
    return accumulator;
  }, {});
};

const _xData = [
  { IdQuiz: "1", Blocco: "00451", Domanda: "01", Risposta: "TRUE", Capitolo: "00" },
  { IdQuiz: "2", Blocco: "00451", Domanda: "02", Risposta: "FALSE", Capitolo: "00" },
  { IdQuiz: "3", Blocco: "00451", Domanda: "03", Risposta: "FALSE", Capitolo: "00" },
  { IdQuiz: "4", Blocco: "00450", Domanda: "01", Risposta: "TRUE", Capitolo: "00" },
  { IdQuiz: "5", Blocco: "00450", Domanda: "02", Risposta: "FALSE", Capitolo: "00" },
  { IdQuiz: "6", Blocco: "00450", Domanda: "03", Risposta: "FALSE", Capitolo: "00" },
  { IdQuiz: "7", Blocco: "00452", Domanda: "01", Risposta: "TRUE", Capitolo: "00" },
  { IdQuiz: "8", Blocco: "00452", Domanda: "02", Risposta: "FALSE", Capitolo: "00" },
  { IdQuiz: "9", Blocco: "00452", Domanda: "03", Risposta: "FALSE", Capitolo: "00" }
];

const result = Object.values(groupBy(_xData, 'Blocco'));
console.log(result);
0
Chris Wu 26 août 2020 à 09:58

J'ai dessiné mes triplés 20 fois, mais je voudrais vérifier, c'est-à-dire que j'extrais sans répétitions! idées ??

Voici mon code:

var bacino = new Array(20);
var index;
var domanda;

for (var i = 0; i < 20; i++) {
    index = (Math.round((Math.random() * 514) + 1));
    bacino[i] = bacino.push(array[index]);
    bacino[i] = bacino.pop();
}
0
Massimo Pisano 1 sept. 2020 à 07:19