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