function whatIsInAName(collection, source) {
var arr = [];
var a = Object.keys(source);
console.log(a)
loop:for (var i =0 ;i<collection.length;i++){
var flag=true;
for(var j=0;j<a.length;j++){
if(collection[i].hasOwnProperty(a[j])){
if(collection[i][a[j]]!==source[a[j]]){
// flag=false;
break loop; //如果不相等跳到第一个for,开始下一轮
}
}else {
// flag=false;
break loop; //如果不相等跳到第一个for,开始下一轮
}
}
// if(flag){
// arr.push(collection[i]);
// }
arr.push(collection[i]); }
return arr;
}
var a = whatIsInAName([{ "a": 1, "b": 2 }, { "a": 1 }, { "a": 1, "b": 2, "c": 2 }], { "a": 1, "b": 2 });
都是从第二个for中跳出来的,这里在迭代完第二个元素{ "a": 1 }时,进入第二个break,然后直接就return了,我知道这样用不好,但是,不是应该先进入下一个循环么?
相关分类