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

Javascript 为什么我的函数需要两个返回语句才能正确?,javascript,arrays,filter,return,Javascript,Arrays,Filter,Return,因此,我的编码练习让我创建一个函数“GetElementsCreateThan10AtProperty”,该函数返回一个数组,其中包含数组中大于10的元素,这些元素位于给定的键处。玩弄这些代码,我不明白为什么我的筛选方法需要两个返回语句。任何帮助我理解的提示都将不胜感激 function getElementsGreaterThan10AtProperty(obj, key) { if (!Array.isArray(obj[key]) || obj[key].length < 1 )

因此,我的编码练习让我创建一个函数
“GetElementsCreateThan10AtProperty”
,该函数返回一个数组,其中包含数组中大于10的元素,这些元素位于给定的键处。玩弄这些代码,我不明白为什么我的筛选方法需要两个返回语句。任何帮助我理解的提示都将不胜感激

function getElementsGreaterThan10AtProperty(obj, key) {
  if (!Array.isArray(obj[key]) || obj[key].length < 1 ) {
    return [];
  } else {
    return obj[key].filter(function(item){
      return item > 10;
    });
  }
}
函数GetElementsCreateThan10AtProperty(obj,键){
if(!Array.isArray(obj[key])| | obj[key].length<1){
返回[];
}否则{
返回对象[key]。过滤器(函数(项){
返回项>10;
});
}
}
而且

  • 如果数组为空,则应返回空数组
  • 如果数组不包含大于10的元素,则应返回空数组
  • 如果给定键处的属性不是数组,则应返回空数组
  • 如果键上没有属性,它应该返回一个空数组

函数
Array.prototype.filter
使用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;
});

它有三个。。。但是一个是在filterReturns的回调中,它不会通过函数调用向上级联,这意味着函数中的返回不会导致外部函数中的返回
。如果数组为空,它应该返回一个空数组。。。etc
这样就可以了-您甚至可以删除
| | obj[key].length<1
,它仍然可以执行您想要的操作