Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用JavaScript中的函数从数组中最好地返回记录_Javascript_Angularjs - Fatal编程技术网

如何使用JavaScript中的函数从数组中最好地返回记录

如何使用JavaScript中的函数从数组中最好地返回记录,javascript,angularjs,Javascript,Angularjs,我确信我遗漏了一些明显的东西,但当找到的currentRecord为true时,下面的代码不起作用 迭代数组并在找到匹配项时返回该记录的最佳方法是什么?我认为这里的forEach是AngularJS的一部分 function getCurrentRecord() { homePageVideos.forEach(function(rec) { if (rec.currentRecord === true){ return rec;

我确信我遗漏了一些明显的东西,但当找到的currentRecord为true时,下面的代码不起作用

迭代数组并在找到匹配项时返回该记录的最佳方法是什么?我认为这里的forEach是AngularJS的一部分

function getCurrentRecord() {

    homePageVideos.forEach(function(rec) {
        if (rec.currentRecord === true){
            return rec;
        }
    });

}

JavaScript提供了几个功能。我会使用
filter()
,但解决方案取决于您需要的浏览器兼容性(IE9+,FF1.5+)


您可以简单地使用角度过滤器。在控制器内部,您可以通过在控制器内部使用
$filter
来实现这一点

function getCurrentRecord() {
    var result = $filter('filter')(homePageVideos, true, true); //strict checking
    return result.length > 0? result[0]: [];
}
从数组.prototype.forEach的

注意:无法停止或中断
forEach()
循环。解决方案是使用
Array.prototype.every()
Array.prototype.some()
。见下面的例子

这同样适用于
angular.forEach

但如果要使用简单的for循环,可以这样做:

for (var i=0; i < homePageVideos.length; i++){
  var rec = homePageVideos[i];
  if (rec.currentRecord === true){
    return rec;
  }
}
for(var i=0;i
为什么不提供更好的解决方案?问题是什么是迭代和返回匹配的最佳方式。看起来是正确的,您能为我们提供更多的上下文吗?您想返回所有匹配还是仅返回第一个匹配?查看代码,您似乎只想要第一个。是的。首先(而且只有在我的情况下)。我的代码应该按原样工作吗?当我在chromeIt中调试时,这似乎不是一个有趣的问题,这似乎是最好的答案。MDN参考还包括polyfill(如果需要)。
for (var i=0; i < homePageVideos.length; i++){
  var rec = homePageVideos[i];
  if (rec.currentRecord === true){
    return rec;
  }
}