私はfreecodecampにいくつかの課題を抱えています。 "オブジェクトの配列(最初の引数)を調べ、すべてのオブジェクトの配列を返す関数を作成します一致するプロパティと値のペア(2番目の引数)があります。 "だから私は答えを見て、次のコードaccrossに来た:関数の戻り値を理解する
:function whatIsInAName(collection, source) {
var arr = [];
var keys = Object.keys(source);
// Filter array and remove the ones that do not have the keys from source.
arr = collection.filter(function(obj) {
return keys.every(function(key) {
return obj.hasOwnProperty(key) && obj[key] === source[key];
});
});
return arr;
}
私はそれは私が得るように見えるカント何をcollection.filter内部のリターンが何であるかを理解し、なぜ我々はこれらの2が必要なのですか
return keys.every(function(key) {
return obj.hasOwnProperty(key) && obj[key] === source[key];
なぜコードは2番目のコードでのみ機能しますか?
誰かが私にこのことを説明できますか。
を渡されますが、オブジェクトの祖先が持っている場合これらの属性は子供にとっても考慮されます。 –
関数から値を返すには 'return'を使う必要があるからです。最初の戻り値は 'every'に渡された関数から戻ります。 2回目の戻りは 'whatIsInAName'から戻ります。 – Carcigenicate
メソッドの詳細については、https://developer.mozilla.org/nl/docs/Web/JavaScript/Reference/Global_Objects/Object/hasOwnPropertyを参照してください。 –