2017-11-09 9 views
1

私のコード演習では、“getElementsGreaterThan10AtProperty”という関数を作成し、配列内の配列内の要素を含む配列を返します。配列内の要素は、指定されたキーにあり、10より大きい値です。コードを再生して、 return文。私の理解を助けるためのヒントは非常に高く評価されます。なぜ私の関数は2つのreturn文を必要とするのですか?

function getElementsGreaterThan10AtProperty(obj, key) { 
    if (!Array.isArray(obj[key]) || obj[key].length < 1) { 
    return []; 
    } else { 
    return obj[key].filter(function(item){ 
     return item > 10; 
    }); 
    } 
} 

また、

  • 配列が空の場合、それは空の配列を返す必要があります。
  • 配列に10より大きい要素が含まれていない場合、空の配列が返されます。
  • 指定されたキーのプロパティが配列でない場合は、空の配列を返す必要があります。
  • キーでないプロパティが存在しない場合は、空の配列
+2

...が、1つは、外側の関数 –

+0

戻り値をフィルタリングするコールバックであります'配列が空の場合は空の配列を返します。 ... etc'これだけで済むでしょう - あなたは '|| obj [key] .length <1'そしてそれはあなたが望むものをやり遂げます –

+0

で戻りが発生しない機能で戻りを意味する、関数呼び出しを通って上方にカスケード接続していない –

答えて

2

Array.prototype.filter関数は、フィルタ関数を使用して新しい配列を返す返さなければなりません。 コールバックフィルタ関数は、を返します。は、アイテムが保持されているかどうかを示すブール値です。だから... ...

// the outer `return` returns the resulting Array. 
return obj[key].filter(function(item){ 

    // The inner `return` returns a pass/fail (true/false) 
    return item > 10; 
}); 
それは3を持っている
関連する問題