使用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 相关文章推荐
jquery实现简单的拖拽效果实例兼容所有主流浏览器
Jun 21 Javascript
javascript 函数声明与函数表达式的区别介绍
Oct 05 Javascript
js调用后台、后台调用前台等方法总结
Apr 17 Javascript
jQuery中map()方法用法实例
Jan 06 Javascript
从零开始学习Node.js系列教程之SQLite3和MongoDB用法分析
Apr 13 Javascript
JavaScript实现的冒泡排序法及统计相邻数交换次数示例
Apr 26 Javascript
vue一步步实现alert功能
Jul 05 Javascript
对angularJs中自定义指令replace的属性详解
Oct 09 Javascript
微信小程序如何调用json数据接口并解析
Jun 29 Javascript
JS实现星星海特效
Dec 24 Javascript
Vue axios 跨域请求无法带上cookie的解决
Sep 08 Javascript
js实现详情页放大镜效果
Oct 28 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网站备份程序代码分享
2011/06/10 PHP
php实现的农历算法实例
2015/08/11 PHP
PHP操作Postgresql封装类与应用完整实例
2018/04/24 PHP
ExtJs Excel导出并下载IIS服务器端遇到的问题
2011/09/16 Javascript
javascript权威指南 学习笔记之javascript数据类型
2011/09/24 Javascript
js算法中的排序、数组去重详细概述
2013/10/14 Javascript
js去除输入框中所有的空格和禁止输入空格的方法
2014/06/09 Javascript
nodejs教程之制作一个简单的文章发布系统
2014/11/21 NodeJs
浅谈jQuery添加的HTML,JS失效的问题
2016/10/05 Javascript
JavaScript页面实时显示当前时间实例代码
2016/10/23 Javascript
js在ie下打开对话窗口的方法小结
2016/10/24 Javascript
jQuery与js实现颜色渐变的方法
2016/12/30 Javascript
详解JavaScript调用栈、尾递归和手动优化
2017/06/03 Javascript
微信小程序 es6-promise.js封装请求与处理异步进程
2017/06/12 Javascript
vue router下的html5 history在iis服务器上的设置方法
2017/10/18 Javascript
关于Vue背景图打包之后访问路径错误问题的解决
2017/11/03 Javascript
元素全屏的设置与监听实例
2017/11/28 Javascript
vue axios请求成功却进入catch的原因分析
2020/09/08 Javascript
Python中for循环详解
2014/01/17 Python
Python实现批量把SVG格式转成png、pdf格式的代码分享
2014/08/21 Python
Python反转序列的方法实例分析
2018/03/21 Python
对numpy中数组元素的统一赋值实例
2018/04/04 Python
如何用Python实现简单的Markdown转换器
2018/07/16 Python
Python开发之Nginx+uWSGI+virtualenv多项目部署教程
2019/05/13 Python
python使用docx模块读写docx文件的方法与docx模块常用方法详解
2020/02/17 Python
基于Pyinstaller打包Python程序并压缩文件大小
2020/05/28 Python
CSS3只让背景图片旋转180度的实现示例
2021/03/09 HTML / CSS
浅谈HTML5 defer和async的区别
2016/06/07 HTML / CSS
给学校的建议书
2014/03/12 职场文书
小学老师寄语大全
2014/04/04 职场文书
中药学专业求职信
2014/05/31 职场文书
中国梦读书活动总结
2014/07/10 职场文书
反四风个人对照检查材料思想汇报
2014/09/25 职场文书
英文感谢信格式
2015/01/21 职场文书
报案材料怎么写
2015/05/25 职场文书
地道战观后感2000字
2015/06/04 职场文书