使用angularjs.foreach时return的问题解决


Posted in Javascript onSeptember 30, 2018

AngularJS中当我们需要遍历某个数组的时候,我们会用到forEach语法。AngularJS中forEach的用法如下:

angular.forEach(array,function(obj,index){
doSomething();
})

array表示需要遍历的数组,obj表示遍历时的每个元素,index表示遍历时元素的下标。index不是必须的参数,可以不写。可以根据需要添加与否。

在写一个比较数组对象中是否存在一个对象,存在返回true,失败返回false.在return时,发现并没有退出方法,自己测试了一下.

首先先写一个数组对象,然后用angularjs的forEach方法循环比较,当存在名字为2的对象时,输出true并返回,否则输出false并返回.

self.test = function() {
  var testArray = [{name: 1},{name:2},{name:3}];
  angular.forEach(testArray, function(value, key){
  if (value.name == 2) {console.log(true + ' pass the test');return;}
  console.log(value.name + ' pass');
  });
  console.log(false + ' pass the test');
  return false;
 }();

刚开始认为,当找到value.name == 2的元素时,方法就会直接返回,所以应该只输出1 pass,true pass the test然后程序结束,但输出结果却是这样的:

使用angularjs.foreach时return的问题解决

结果发现在forEach里的return 居然只起到了for循环里的continue作用.

再把forEach循环的返回值和执行函数的返回值打印出来:

使用angularjs.foreach时return的问题解决

forEach函数返回的是循环的数组,函数的返回值是false.说明在forEach里return 并没有奏效,仅仅起到了continue的作用.
去网上搜了一下,并没有原因说明..

解决方案:用一个临时变量存储结果,当条件成立相同时将结果改为true:

self.test = function() {
  var testArray = [{name: 1},{name:2},{name:3}];
  var result = false;
  angular.forEach(testArray, function(value, key){
  if (value.name == 2) {result = true;}
  });
  return result;
 };
 console.log(self.test());

使用angularjs.foreach时return的问题解决

这样虽然能获得正确的返回值,但却无法阻止forEach的循环,想来forEach应该是用在历遍数组元素来做一些操作,像这样的应该用for循环比较好一些.

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
js操作textarea方法集合封装(兼容IE,firefox)
Feb 22 Javascript
javascript实现页面内关键词高亮显示代码
Apr 03 Javascript
js实现点击按钮后给Div图层设置随机背景颜色的方法
May 06 Javascript
js中数组插入、删除元素操作的方法
Feb 15 Javascript
Easyui Datagrid自定义按钮列(最后面的操作列)
Jul 13 Javascript
详解express与koa中间件模式对比
Aug 07 Javascript
cocos creator Touch事件应用(触控选择多个子节点的实例)
Sep 10 Javascript
JavaScript编程设计模式之构造器模式实例分析
Oct 25 Javascript
vue 之 css module的使用方法
Dec 04 Javascript
JavaScript代码简化技巧实例解析
Sep 09 Javascript
Ajax请求超时与网络异常处理图文详解
May 23 Javascript
js前端面试常见浏览器缓存强缓存及协商缓存实例
Jun 21 Javascript
angular将html代码输出为内容的实例
Sep 30 #Javascript
详解Vue.js iview实现树形权限表(可扩展表)
Sep 30 #Javascript
对angularJs中$sce服务安全显示html文本的实例
Sep 30 #Javascript
vue  自定义组件实现通讯录功能
Sep 30 #Javascript
对angularJs中2种自定义服务的实例讲解
Sep 30 #Javascript
angularJs在多个控制器中共享服务数据的方法
Sep 30 #Javascript
iview Upload组件多个文件上传的示例代码
Sep 30 #Javascript
You might like
php获取YouTube视频信息的方法
2015/02/11 PHP
Linux环境下php实现给网站截图的方法
2016/05/03 PHP
php获取网站根目录物理路径的几种方法(推荐)
2017/03/04 PHP
php使用curl_init()和curl_multi_init()多线程的速度比较详解
2018/08/15 PHP
PHP获取MySQL执行sql语句的查询时间方法
2018/08/21 PHP
javascript 类定义的4种方法
2009/09/12 Javascript
网页实时显示服务器时间和javscript自运行时钟
2014/06/09 Javascript
js获取当前时间显示在页面上并每秒刷新
2014/12/24 Javascript
JavaScript实现广告的关闭与显示效果实例
2015/07/02 Javascript
jQuery中serializeArray()与serialize()的区别实例分析
2015/12/09 Javascript
JavaScript对象数组排序函数及六个用法
2015/12/23 Javascript
js中判断变量类型函数typeof的用法总结
2016/08/09 Javascript
理解javascript async的用法
2017/08/22 Javascript
react中实现搜索结果中关键词高亮显示
2018/07/31 Javascript
详解vue-cli+es6引入es5写的js(两种方法)
2019/04/19 Javascript
通过seajs实现JavaScript的模块开发及按模块加载
2019/06/06 Javascript
express如何解决ajax跨域访问session失效问题详解
2019/06/20 Javascript
微信小程序使用蓝牙小插件
2019/09/23 Javascript
微信小程序之左右布局的实现代码
2019/12/13 Javascript
在Python程序中操作文件之flush()方法的使用教程
2015/05/24 Python
Python socket网络编程TCP/IP服务器与客户端通信
2017/01/05 Python
Python中函数及默认参数的定义与调用操作实例分析
2017/07/25 Python
python 删除大文件中的某一行(最有效率的方法)
2017/08/19 Python
Python使用re模块正则提取字符串中括号内的内容示例
2018/06/01 Python
对python中UDP,socket的使用详解
2019/08/22 Python
Python迭代器iterator生成器generator使用解析
2019/10/24 Python
python 已知平行四边形三个点,求第四个点的案例
2020/04/12 Python
python实现企业微信定时发送文本消息的实例代码
2020/11/25 Python
Python logging自定义字段输出及打印颜色
2020/11/30 Python
详解Python中的文件操作
2021/01/14 Python
亚洲在线旅行门户网站:Expedia.com.hk(智游网)
2020/04/14 全球购物
将一个数的从第5位开始的7个数取出,其余位置0
2016/05/26 面试题
给公司的建议书范文
2014/05/13 职场文书
职工年度考核评语
2014/12/31 职场文书
OpenCV-Python实现油画效果的实例
2021/06/08 Python
python画条形图的具体代码
2022/04/20 Python