我在 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;
    }
}