我在 JavaScript 中有一个对象:
var obj = {
"a": "test1",
"b": "test2"
}
如何检查 test1 是否作为值存在于对象中?
我在 JavaScript 中有一个对象:
var obj = {
"a": "test1",
"b": "test2"
}
如何检查 test1 是否作为值存在于对象中?
您可以将对象的值转换为数组并测试字符串是否存在。它假设对象没有嵌套并且字符串是完全匹配的:
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
您可以使用数组方法.some
:
var exists = Object.keys(obj).some(function(k) {
return obj[k] === "test1";
});
尝试:
var obj = {
"a": "test1",
"b": "test2"
};
Object.keys(obj).forEach(function(key) {
if (obj[key] == 'test1') {
alert('exists');
}
});
或者
var obj = {
"a": "test1",
"b": "test2"
};
var found = Object.keys(obj).filter(function(key) {
return obj[key] === 'test1';
});
if (found.length) {
alert('exists');
}
这不会对工作NaN
和-0
这些value观。您可以使用(而不是===
)ECMAScript 6 中的新内容:
Object.is(obj[key], value);
使用现代浏览器,您还可以使用:
var obj = {
"a": "test1",
"b": "test2"
};
if (Object.values(obj).includes('test1')) {
alert('exists');
}
最短的 ES6+ 单线:
let exists = Object.values(obj).includes("test1");
使用for...in
循环:
for (let k in obj) {
if (obj[k] === "test1") {
return true;
}
}