带有 angular.forEach 的简单异步代码
Posted
技术标签:
【中文标题】带有 angular.forEach 的简单异步代码【英文标题】:Simple async code with angular.forEach 【发布时间】:2015-08-10 20:00:17 【问题描述】:标志总是假的。我该怎么办?
代码在这里:
var list = ['NOVALUE','VALUE','NOVALUE'];
var flag = false;
angular.forEach(list, function(value)
if('VALUE' === value)
flag = true;
);
console.log(flag);
对不起,我错过了什么
【问题讨论】:
你想做什么..? 因为最后一个元素再次成为false
'VALUE' === 'NOVALUE'
如果你想检查一个数组是否有值,你可以使用indexOf
当您找到匹配项时,您需要 break
退出该循环。不幸的是,angular.forEach
中没有破坏机制:***.com/questions/13843972/angular-js-break-foreach
【参考方案1】:
您应该使用 .indexOf()
,正如 Alexander 所演示的那样:
var list = ['NOVALUE','VALUE','NOVALUE'];
var flag = list.indexOf('VALUE') !== -1;
console.log(flag);
或者.some()
在更一般的情况下:
var list = ['NOVALUE','VALUE','NOVALUE'];
var flag = list.some(function (value)
return value === 'VALUE';
);
console.log(flag);
【讨论】:
【参考方案2】:var list = ['NOVALUE','VALUE','NOVALUE'];
var flag = false;
angular.forEach(list, function(value)
if (value === 'VALUE')
flag = true;
else
flag = false;
console.log(flag);
);
//false, true, false
【讨论】:
如果你能解释它们为什么\如何工作,答案会更好【参考方案3】:使用中断;这样当真正的语句出现时,它就会跳出循环
var list = ['NOVALUE','VALUE','NOVALUE'];
var flag = false;
for(var i=0;i<list.length;i++)
if('VALUE' === value)
flag=true;
break;
else
flag=false;
console.log(flag);
【讨论】:
【参考方案4】:因为列表中的最后一个值是“NOVALUE”所以它总是假的。 你可以这样做
flag = list.indexOf('VALUE') > -1
【讨论】:
以上是关于带有 angular.forEach 的简单异步代码的主要内容,如果未能解决你的问题,请参考以下文章