に運動汝それゆえ技術では動作しません。私はを求めて運動をしています:フィルターFreecodecamp
は、オブジェクトの配列(最初の引数)を介して検索し、配列を返す関数を作ります一致するプロパティと値のペアを持つすべてのオブジェクト(2番目の引数)。ソースオブジェクトの各プロパティと値のペアが、返された配列に含まれる場合は、コレクションのオブジェクトに存在する必要があります。
私が行うことで、これを作成しようとしました。しかし、これは空白の配列を返す
function whatIsInAName(collection, source) {
// What's in a name?
var arr = [];
// Only change code below this line
var srcKeys = Object.keys(source);
arr = collection.filter(function(obj) {
for (var i = 0;i < srcKeys;i++) {
return obj.hasOwnProperty(srcKeys[i]) || obj[srcKeys[i]] == source[srcKeys[i]];
}
});
// Only change code above this line
return arr;
}
whatIsInAName([
{ first: "Romeo", last: "Montague" },
{ first: "Mercutio", last: null },
{ first: "Tybalt", last: "Capulet" }], { last: "Capulet" });
を。フィルターメソッドの仕組みを完全に理解していない可能性があります。
記載されている解決策の一つは次のとおりです。
function whatIsInAName(collection, source) {
// "What's in a name? that which we call a rose
// By any other name would smell as sweet.”
// -- by William Shakespeare, Romeo and Juliet
var srcKeys = Object.keys(source);
// filter the collection
return collection.filter(function (obj) {
for(var i = 0; i < srcKeys.length; i++) {
if(!obj.hasOwnProperty(srcKeys[i]) || obj[srcKeys[i]] !== source[srcKeys[i]]) {
return false;
}
}
return true;
});
}
// test here
whatIsInAName([
{ first: "Romeo", last: "Montague" },
{ first: "Mercutio", last: null },
{ first: "Tybalt", last: "Capulet" }], { last: "Capulet" });
私がやったことは与えられた答え:(
と同じ出力を与えるものではありませんなぜ私のようなnoobのを理解するために、徹底的に説明してみてくださいあなたの助けのおかげ万人。