AngularJS中当我们需要遍历某个数组的时候,我们会用到forEach语法.AngularJS中forEach的用法如下:
angular.forEach(数组,函数(obj,指数){ doSomething (); })
数组表示需要遍历的数组,obj表示遍历时的每个元素,索引表示遍历时元素的下标.index不是必须的参数,可以不写。可以根据需要添加与否。
在写一个比较数组对象中是否存在一个对象,存在返回真,失败返回错误的。在返回时,发现并没有退出方法,自己测试了一下。
首先先写一个数组对象,然后用angularjs的forEach方法循环比较,当存在名字为2的对象时,输出真实并返回,否则输出错误并返回。
自我。测试=function () { var testArray=[{名称:1},{名称:2},{名称:3}); 角。forEach (testArray、功能(价值,键){ 如果(value.name==2){控制台。日志(真实+“通过测试”);回归;} console.log (value.name + '通过'); }); 控制台。日志(假+“通过测试”); 返回错误; } (); >之前刚开始认为,当找到value.name==2的元素时,方法就会直接返回,所以应该只输出1传递,真正通过测试然后程序结束,但输出结果却是这样的:
结果发现在forEach里的返回居然只起到了为循环里的继续作用。
再把forEach循环的返回值和执行函数的返回值打印出来:
forEach函数返回的是循环的数组,函数的返回值是错误的。说明在forEach里返回并没有奏效,仅仅起到了继续的作用。
去网上搜了一下,并没有原因说明. .解决方案:用一个临时变量存储结果,当条件成立相同时将结果改为真:
自我。测试=function () { var testArray=[{名称:1},{名称:2},{名称:3}); var=false结果; 角。forEach (testArray、功能(价值,键){ 如果(value.name==2){结果=true;} }); 返回结果; }; console.log (self.test ());
这样虽然能获得正确的返回值,但却无法阻止forEach的循环,想来forEach应该是用在历遍数组元素来做一些操作,像这样的应该用的循环比较好一些。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
使用angularjs.foreach时返回的问题解决