J'ai un objet qui ressemble à ceci: Voici le code que j'utilise actuellement: p> P> var objet = {"mot-clé": "Suivant", "autre mot": "mauvais", "TEST": "TEST"} CODE>. Je tiens à saisir l'entrée qu'un utilisateur entre dans un champ de texte et de rechercher une entrée pour l'une des touches d'objets. Si c'est une correspondance, je veux aussi que cela vérifie si la valeur de cette clé est "Suivant". Si c'est le cas, je veux que cela puisse exécuter une fonction. Si une clé correspond à une clé, mais la valeur n'est pas "suivante", je veux que
console.log code> la valeur.
<input id='input' autofocus>
<div id="gamearea"></div>
3 Réponses :
Ce qui suit est une idée de la façon de résoudre le problème à l'aide de la méthode p> objet.tries code>.
const sentence = "This sentence has a keyword";
const object = {"keyword": "next", "other word": "wrong", "test": "wrong"};
const someFunc = () => {
console.log("function!");
}
Object.entries(object).forEach(([key, val]) => {
if (sentence.includes(key)) {
val === "next" ? someFunc() : console.log('here');
}
})
Deux choses à prendre en compte: Caniuse.com/#search=includes et Caniuse.com/#search=Object.entries
ci-dessous est un exemple de base qui vous donnera l'idée à l'aide d'objet.Keys
p>
var object = {"keyword": "next", "other word": "wrong", "test": "wrong"}; var yourSearchWord = 'keyword'; // Get the key names var objectKeys = Object.keys(object); if(objectKeys.indexOf(yourSearchWord) != -1) { if(object[yourSearchWord] === 'next') { console.log('The value is next'); // Call your next function } }
Ce n'est pas celui qui a bownvoté, mais votre code doit essentiellement faire une recherche linéaire à travers toutes les clés de l'objet lorsque vous utilisez indexof code>, il existe plutôt des approches plus rapides pour vérifier l'appartenance à une clé dans un objet . En outre, peut-être un peu plus d'une explication de la manière dont votre code fonctionne peut aider votre réponse. Je ne sais pas si ce sont les raisons pour lesquelles tu as été évité, il suffit de spéculer
Oui, je suis d'accord avec vous sur ce point Nick et comme votre solution aussi.
Compte tenu d'une entrée, vous pouvez vérifier s'il s'agit d'une propriété de votre p> objet code> en utilisant
objet.pototype.hasownProperty () code>
. Utilisation de la notation avec support, vous pouvez ensuite récupérer la valeur de la propriété fournie comme entrée, pour vérifier s'il est égal à "suivant" code>:
var object = {"keyword": "next", "other word": "wrong", "test": "wrong"};
var userInput = "keyword";
if(object.hasOwnProperty(userInput)) { // check that user input is a property . in object
var value = object[userInput]
if(value === "next") { // check that the value of the users input is "next"
// run some function
console.log("Value next, so we can call a function");
} else { // the value is not next, so we can log it
console.log(value);
}
}