我有一个包含条件的对象数组,我正在尝试搜索或比较对象数组与简单数组中的值:
var myObjArr = [ {this: "someval", that: "anotherval" }, {this: "someval", that: "anotherval" }, {this: "someval", that: "anotherval" } ];
然后我有一个结果数组...
var newArrResults = [ "anotherval", "someval", "anotherval2" ];
我需要检查myObjArr以查找结果数组newArrResults中的任何字符串值。我尝试了很多方法,大多数方法都不稳定。
我尝试了什么:
for(var b = 0; b<myObjArr.length; b++){
if(newArrResults.indexOf(myObjArr[b].this) !== -1 && newArrResults.indexOf(myObjArr[b].that) !== -1 ) {
// is unstable
// i need to know if there are exact matches in "this & that"
}
我尝试的第一种方法是循环遍历ArrayObject并查找indexOf,但这似乎有点不稳定。有什么想法吗?救命?引导我走向正确方向的想法?
答案 0 :(得分:0)
let found = myObjArr.filter((item)=>{
return newArrResults.indexOf(item.this) > - 1 ||newArrResults.indexOf(item.that) > -1;
}).length > 0
'found'将是一个布尔值,告诉你它是否在数组中。
答案 1 :(得分:0)
代码中有两个问题 -
1.您应该避免使用this
之类语言的保留关键字
一个结束的大括号&#39;}&#39;您的for
循环中缺少
以下代码适用于您想要的内容 -
var myObjArr = [ {foo: "someval", bar: "anotherval" }, {foo: "someval", bar: "anotherval" }, {foo: "someval", bar: "anotherval" }, {foo:"someVal",bar:"noVal"}];
var newArrResults = [ "anotherval", "someval", "anotherval2" ];
for(var b = 0; b<myObjArr.length; b++){
if(newArrResults.indexOf(myObjArr[b].foo) !== -1 &&
newArrResults.indexOf(myObjArr[b].bar) !== -1 ) {
console.log("Exact match");
//exact matches in "foo & bar"
}
}
这里是Fiddle