0
votes

L'objet de retour a la condition vraie de l'objet a la clé

J'ai une question sur l'objet. Je veux filtrer pour renvoyer la liste des clés a la condition vraie dans cet objet ci-dessous:

arrayWantreturn = ["key1", "key3"]

Pour une raison quelconque, je dois ajouter une clé spécifique pour cela. Maintenant, je veux retourner un tableau a seclect true.

myObject = {
   key1: {
     name:"key1",
     select:true
   },
   key2: {
     name:"key2",
     select:false
   },
   key3: {
     name:"key3",
     select:true
   }
}

Merci beaucoup pour votre aide.


0 commentaires

3 Réponses :


1
votes

Vous pouvez peut-être essayer ce qui suit:

const myObject = {
   key1: {
     name:"key1",
     select:true
   },
   key2: {
     name:"key2",
     select:false
   },
   key3: {
     name:"key3",
     select:true
   }
};

const result = Object.entries(myObject)
                     .filter(([k, v]) => v['select'])
                     .flatMap(e => e[1].name);

console.log(result);

J'espère que cela vous aidera!


0 commentaires

1
votes

Vous pouvez obtenir les valeurs de votre objet en utilisant Object.values ​​() , puis conservez tous les objets qui ont un select de true en utilisant .filter () a>. Vous pouvez alors .map () chaque objet restant à sa propriété de nom comme ceci:

const myObject = { key1: { name:"key1", select:true }, key2: { name:"key2", select:false }, key3: { name:"key3", select:true } };
const res = Object.values(myObject)
              .filter(({select}) => select)
              .map(({name}) => name); 
      
console.log(res);

Cela utilise une affectation de déstructuration pour extraire les valeurs de propriété dans les arguments de la méthode de rappel.


0 commentaires

1
votes

Vous pouvez faire une boucle avec cet objet:

var myObject = {
   key1: {
     name:"key1",
     select:true
   },
   key2: {
     name:"key2",
     select:false
   },
   key3: {
     name:"key3",
     select:true
   }
};

var arr = [];

for (var prop in myObject) {
    if (myObject[prop].select) {
        arr.push(myObject[prop].name);
    }
}

console.log(arr);


0 commentaires