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了,我知道这样用不好,但是,不是应该先进入下一个循环么?
添加回答
举报
0/150
提交
取消