これはFreeCodeCampチャレンジのためのものです: "それはあなたのアートです"。課題は「オブジェクトの配列(第1引数)を調べ、一致するプロパティと値のペア(第2引数)を持つすべてのオブジェクトの配列を返す関数を作成する」ことです。Forループソリューションと.Every()ソリューションが異なるのはなぜですか?
どのように動作するかを理解するには、解決策をチェックする必要がありました。私もと私自身の解決策を作ったのループもそれがうまく動作するかどうかを確認します。
"[{ "a": 1, "b": 2 }, { "a": 1, "b": 2, "c": 2 }]
"を返す "whatIsInAName([{ "a": 1, "b": 2 }, { "a": 1 }, { "a": 1, "b": 2, "c": 2 }], { "a": 1, "b": 2 })
"という引数を使用すると、.Every()メソッドが機能するように見えます。
.Every方法
function whatIsInAName(collection, source) {
// What's in a name?
var arr = [];
// Only change code below this line
var myCol = collection;
var mySou = Object.keys(source);
arr = myCol.filter(function(object){
return mySou.every(function(key){
return object.hasOwnProperty(key) && object[key] === source[key];
}
);
});
// Only change code above this line
return arr;
}
console.log(whatIsInAName([{ "a": 1, "b": 2 }, { "a": 1 }, { "a": 1, "b": 2, "c": 2 }], { "a": 1, "b": 2 }));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
ループ方法について
function whatIsInAName(collection, source) {
// What's in a name?
var arr = [];
// Only change code below this line
var myCol = collection;
var mySou = Object.keys(source);
arr = myCol.filter(function(object){
for (var i = 0; i < mySou.length; i++) {
return object.hasOwnProperty(mySou[i]) && object[mySou[i]] === source[mySou[i]];
}
});
// Only change code above this line
return arr;
}
console.log(whatIsInAName([{ "a": 1, "b": 2 }, { "a": 1 }, { "a": 1, "b": 2, "c": 2 }], { "a": 1, "b": 2 }));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
2つの質問。 ループメソッドを使用することは可能ですか?はい場合は、次のように私は唯一の「[{ "a": 1, "b": 2 }, { "a": 1, "b": 2, "c": 2 }]
」
リターンをあなたのforループは正確に1回実行されます...戻り値が真実である間に 'every'が繰り返し実行されます –