Je travaille sur une liste des éléments de la case à cocher optionnels et je veux avoir une fonction checkall . Avec cette fonction, je passe la rowsarray comme argument et souhaitez l'allumer d'un tableau d'objets à un seul objet, avec toutes les options de là avec leurs identifiants comme clé et leur valeur comme vraie .

Donc de cela rowsarray →
[{name: '0years', id: '0 TO 1'}, {name: '1years', id: '1 TO 2'}{name: '2years', id: '2 TO 3'}, ~~~~~] (il y a 17 objets à l'intérieur)

Pour ça return{ '-1 TO 0': true, '0 TO 1': true,'1 TO 2': true }

Je n'ai plus besoin de la valeur de la valeur plus et que vous voulez lui donner une nouvelle valeur de vrai , mais je ne sais pas comment ajouter cela.

Jusqu'à présent, j'ai ça, mais je ne suis pas sûr d'aller d'ici:

function convertRowsToObject(rowsArray) {
        // rowsArray [{name: '', id: '-1 TO 0'}, {name: '', id: '1 TO 2'}]
        // return an object that looks like
        // { '-1 TO 0': true, '1 TO 2': true }
       let allTrue = Object.assign({}, ...rowsArray)
        console.log(`rowsArray → `, rowsArray)
        return {}
      }

Cela ne me donne malheureusement que récupérer l'objet final de la matrice 17 fois ...

allTrue → {name: '100+ years', id: "100 TO 150"}

Devrais-je utiliser réduire ici? Supprimer le nom et le remplacer par une seule valeur de 'TRUE' me résout.

Des idées sur la façon de progresser avec cela?

À votre santé!

1
LovelyAndy 3 juin 2021 à 00:21

1 réponse

Meilleure réponse

Vous pouvez utiliser Array.prototype.reduce() comme ceci:

const rowsArray = [{name: '', id: '-1 TO 0'}, {name: '', id: '1 TO 2'}];

function convertRowsToObject(rowsArray) {
  // rowsArray [{name: '', id: '-1 TO 0'}, {name: '', id: '1 TO 2'}]
  // return an object that looks like
  // { '-1 TO 0': true, '1 TO 2': true }
  return rowsArray.reduce((acc, { id }) => ({ ...acc, [id]: true }), {});
}

const result = convertRowsToObject(rowsArray);

console.log(result);

Je ne sais pas pourquoi vous en avez besoin, car la valeur true ne fournit aucune information, un tableau simple peut être suffisant:

const rowsArray = [{name: '', id: '-1 TO 0'}, {name: '', id: '1 TO 2'}];

function convertRowsToObject(rowsArray) {
  return rowsArray.map(({ id }) => id);
}

const result = convertRowsToObject(rowsArray);

console.log(result);
1
Guerric P 2 juin 2021 à 21:32