Disons que j'ai un objet avec la structure je veux extraire des éléments où Sortie attendue: p> J'ai essayé de suivre similaire Exemples mais omis de mettre en œuvre ce que je voulais. p> p> key2 == "abc" code>. p>
5 Réponses :
Utilisez Vous pouvez ensuite rejoindre Sauvegarde p> Object.entries () code>
pour extraire toutes les paires de clé / valeur de data code> comme tableau, Carte sur chaque paire, puis
Filtre code>
sur chaque valeur pour extraire ceux que vous voulez. objet.fromentre () code>
p> !!values && values[findKey] === findValue
Mon cerveau fait mal à essayer de suivre tous les destructurants qui y vont.
Bien que cela fonctionne, il y a tellement de destructurations ici que vous pourriez perdre le flux
@MANOSKOUNAKIS Il n'y a que deux destructures ici, une matrice ( [clé, val] code>) et un objet (
{valeur} code>). Vous ne savez pas trop ce que vous considérez trop?
Avez-vous besoin de la chaîne optionnelle? Je pensais que si vous essayez d'accéder à une propriété au premier calque qui n'est pas là, il retourne non défini?
@Ifaruki C'est là que l'une des entrées de tableau ne dispose pas d'une propriété code> code>. S'ils le faisaient, valeurs code> serait
non défini code> et
valeurs [FindCey] code> lancerait une erreur
À première vue, j'ai vu la valeur de retour du rappel de la flèche à l'intérieur de la carte et pensais que c'était une destructure.
Je sais que je pensais que je pensais que parce qu'ils n'auraient pas dit qu'il pouvait arriver qu'il n'y ait pas de valeurs code> disponibles.
Vous pouvez réduire les propriétés de l'objet à ceux qui passent un filtre
p>
const data = { a : [{values: {key1: 5, key2: "abc"}}, {values: {key1: 3, key2: "abc"}}, {values: {key1: 4, key2: "cde"}}], b : [{values: {key1: 3, key2: "ffe"}}, {values: {key1: 11, key2: "gga"}}, {values: {key1: 7, key2: "abc"}}] }; const results = Object.getOwnPropertyNames(data).reduce((results, key) => { const filtered = data[key].filter(item => item.values.key2 === 'abc'); if (filtered && filtered.length) { results[key] = filtered; } return results; }, {}); console.log(results);
Pourrait avoir besoin de clarifier avec OP s'ils veulent des résultats vides omis mais c'est une belle addition
a : [{values: {key1: 5, key2: "abc"}}, {values: {key1: 3, key2: "abc"}}], b : [{values: {key1: 7, key2: "abc"}}]
simple pour une boucle de> iTerate sur les clés et Filtres les tableaux et réaffectaient les propriétés directement. utilise filtre et Destructures Key2 à filtrer sur elle. p> p>
Mutate les données directement. const data = {
a : [{values: {key1: 5, key2: "abc"}}, {values: {key1: 3, key2: "abc"}}, {values: {key1: 4, key2: "cde"}}],
b : [{values: {key1: 3, key2: "ffe"}}, {values: {key1: 11, key2: "gga"}}, {values: {key1: 7, key2: "abc"}}]
}
for(const k of Object.keys(data))
(data[k] = data[k].filter(({values:{key2}={}})=>key2==='abc'))
.length || delete data[k]
console.log(data)
Comme vous avez besoin de itérer sur vos attributs d'objets, je vous suggère de les extraire avec https://developer.mozilla.org/es/docs/web/javascript/referencia/objetos_globales / Objet / Keys P> Je vous suggère de faire itérer comme ceci: p> bonne chance. P> P> objet.keys (objet) code> que vous pouvez trouver ici: