假设我有一个对象数组{key:string},其中所有键值对都是唯一的(不同对象中的键或值允许相同,但是键值对相同)
const arr = [{a_1:"val_1"}, {a_2:"val_2"}, ..., {a_n:"val_n"}];
我有一个目标对象
const target = {a_i: "val_i"};
我想找到是否target
存在,arr
即它的键和值是否与中的某个对象匹配arr
。如果为true,则希望从中arr
返回对象。
示例:(已编辑)
const target = {foo: "bar"};
const arr = [{foo: "bar"}, {corona: "COVID-19"}, {foo: "notBar"}, {notFoo: "bar"}];
在这个例子中,搜索的target
上arr
会返回{foo:"bar"}
从arr
。
注意:
arr.find(ob => ob === target);
返回未定义。
如果目标选项中只有一个键/值对,则可以使用Array.prototype.some()
查找整个源数组(直到找到匹配项)并使用提取目标键/值Object.entries()
,如下所示:
const arr = [{a_1:"val_1"}, {a_2:"val_2"}, {a_n:"val_n"}],
target = {a_2: "val_2"},
[[targetKey, targetValue]] = Object.entries(target),
hasMatch = arr.some(item => targetKey in item && item[targetKey] == targetValue)
console.log(hasMatch)
.as-console-wrapper{min-height:100%;}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句