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 for … in est la solution optimale – suggérée par @isvforall
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!"); }