检查数组在Javascript中是否具有精确的键值对象

检查数组在Javascript中是否具有精确的键值对象,javascript,arrays,Javascript,Arrays,我正在做一个简单的检查,看看这个数组是否有一个精确的键值对 比如说 testArray = [ { "key1": "value1" }, { "key2": "value2" }, { "key1": "value2" ) ] 如何检查数组是否包含确切的对象{“key1”:“value2”} 感谢您的帮助。在现代浏览器中 testArray.some(function(o){return o["key1"] === "value2";}) 如果找到配对,则为true,否则

我正在做一个简单的检查,看看这个数组是否有一个精确的键值对

比如说

testArray = [
   { "key1": "value1" },
   { "key2": "value2" },
   { "key1": "value2" )
]
如何检查数组是否包含确切的对象{“key1”:“value2”}

感谢您的帮助。

在现代浏览器中

testArray.some(function(o){return o["key1"] === "value2";})
如果找到配对,则为
true
,否则为
false


这假设每个对象只包含一个键/值对,并且该值从来都不是未定义的

您首先要检查对象中是否存在键(使用
.hasOwnProperty()
以及该键值是否引用了与您要查找的值匹配的“值”。代码非常简单:

var testKey = "some_key";
var testVal = "some_val";

for (i=0; i < testArray.length; i++) {
    if ((testArray[i].hasOwnProperty(testKey)) && (testArray[i][testKey] === testVal)) {
        // positive test logic
        break;   // so that it doesn't keep looping, after finding a match
    } 
    else {
        // negative test logic
    }
}
var testKey=“some_key”;
var testVal=“some_val”;
对于(i=0;i
+1,我喜欢你的编辑。还感谢使用.some():)@Alex如果不是你的评论,我会错过它的哎呀。有很多人仍然在使用IE8和更早的版本@talemyn因此写了他的前言:“在现代浏览器中,”;)是的,我不是“现代浏览器”这个词的超级粉丝。似乎每个人对这意味着什么都有不同的看法除非你真的想要JS的类型强制,否则你应该使用严格的相等运算符。。。您必须使用polyfill或自己创建函数。
testArray.find(key => key.key1 === 'value1')