0
votes

Existe-t-il un moyen de rechercher des clés spécifiques dans un objet, puis de connecter les résultats?

J'essaie de déterminer comment rechercher un objet pour vérifier s'il y a une correspondance avec la valeur de recherche. De là, je veux énumérer quels objets avaient une correspondance.

Pour cet exemple, je veux rechercher via nom1 code> et nom2 code> et voir si l'un d'entre eux dispose d'une valeur code> valeur code> de c code>. S'il y a une correspondance, énumérez les objets correspondant à la recherche. Si la valeur de recherche était pour A code>, il apparaîtrait alors uniquement nom1 code>. P>

J'ai essayé de configurer le MyObject code > Avec des données mais je ne sais pas comment boucler à travers l'objet, vérifiez des valeurs spécifiques de la touche code> Options code> pour les comparer à la recherche. p>

p>

let myObject = {
  name1: {
    title: 'Mr',
    options: ['A', 'B', 'C'],

  },

  name2: {
    title: 'Mrs',
    options: ['C', 'D', 'E'],

  }
};


function myFunction() {

  var optionSearch = 'C';

  console.log(optionSearch);
  for (var i = 0; i < myObject.length; i++) {
    if (myObject[i].options == optionSearch)
      console.log(myObject[i] + ' is equal to optionSearch');
    else {
      console.log('No match');
    }
  }
}

myFunction();


0 commentaires

3 Réponses :


0
votes

Cela devrait fonctionner:

Object.keys(myObject)
  .filter((key) => {
    return myObject[key].options.includes(optionSearch)
  })


0 commentaires

1
votes

Les objets n'ont pas de longueur code> de la propriété code> de défaut. Donc, vous ne pouvez pas utiliser pour code> en boucle avec des index numériques. Vous pouvez plutôt utiliser pour ... dans code> pour boucler à travers l'objet comme celui-ci:

p>

let myObject = {name1:{title:'Mr',options:['A','B','C'],},name2:{title:'Mrs',options:['C','D','E'],}};

function getKeys(obj, option) {
  return Object.keys(obj).filter(k => obj[k].options.includes(option))
}

console.log(getKeys(myObject, 'C')) // [ "name1", "name2"]
console.log(getKeys(myObject, 'A')) // [ "name1" ]


0 commentaires

0
votes
var myObject = {
  name1: {
    title: 'Mr', 
    options: ['A', 'B', 'C'], 

  },
  name2: {
    title: 'Mrs', 
    options: ['C', 'D', 'E'], 

  }
};

function myFunction(optionSearch) {
  console.log(optionSearch);
  for(var i in myObject) {
    if (myObject[i].options.indexOf(optionSearch) >= 0)
      console.log(i + ' is equal to optionSearch');
    else {
      console.log('No match');
    }
  }
}

1 commentaires

Appliquer cette approche a fonctionné pour moi. Merci beaucoup Samir!