为什么我的函数需要两个return语句才能正确?

时间:2017-11-09 03:02:08

标签: javascript arrays filter return

所以我的编码练习让我创建了一个函数“getElementsGreaterThan10AtProperty”,它返回一个数组,其中包含位于给定键的数组中的元素,大于10.使用代码我无法弄清楚为什么我的filter方法需要两个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的元素,则应返回一个空数组。
  • 如果给定键的属性不是数组,则应返回一个空数组。
  • 如果密钥没有属性,则应返回空数组

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;
});