Comment vérifier si la valeur existe dans l'objet en utilisant javascript

J'ai un objet en javascript

var obj = { "a": "test1", "b": "test2" } 

Comment vérifier que test1 existe dans l'objet en tant que valeur?

Vous pouvez transformer les valeurs d'un objet en un tableau et tester qu'une chaîne est présente. Il suppose que l'Objet n'est pas imbriqué et que la chaîne est une correspondance exacte:

 var obj = { a: 'test1', b: 'test2' }; if (Object.values(obj).indexOf('test1') > -1) { console.log('has test1'); } 

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/values

essayer:

 var obj = { "a": "test1", "b": "test2" }; Object.keys(obj).forEach(function(key) { if (obj[key] == 'test1') { alert('exists'); } }); 

Vous pouvez essayer ceci:

 function checkIfExistingValue(obj, key, value) { return obj.hasOwnProperty(key) && obj[key] === value; } var test = [{name : "jack", sex: F}, {name: "joe", sex: M}] console.log(test.some(function(person) { return checkIfExistingValue(person, "name", "jack"); })); 

Vous pouvez utiliser la méthode Array .some :

 var exists = Object.keys(obj).some(function(k) { return obj[k] === "test1"; }); 

Hors des solutions proposées et d'un jsperf que j'ai mis en place, on peut voir que la méthode forin est la solution optimale – suggérée par @isvforall

http://jsperf.com/value-check-in-object/3

 if( myObj.hasOwnProperty('key') && myObj['key'] === value ){ ... } 

Utiliser for...in boucle:

 for (k in obj) { if (obj[k] == "test1") return true; } 

Ce devrait être un simple contrôle.

Exemple 1

  var myObj = {"a": "test1"} if(myObj.a == "test1") { alert("test1 exists!"); }