javascript中的for in循环和for循环的使用
原文链接:http://caibaojian.com/js-loop-for-in.html
javascript for...in 语句
for...in 语句用于对数组或者对象的属性进行循环操作。
for ... in 循环中的代码每执行一次,就会对数组的元素或者对象的属性进行一次操作。
viaTip:for-in循环应该用在非数组对象的遍历上,使用for-in进行循环也被称为“枚举”。原文来自:http://caibaojian.com/js-loop-for-in.html
语法:
for (变量 in 对象) { 在此执行代码 }
“变量”用来指定变量,指定的变量可以是数组元素,也可以是对象的属性。
实例:使用 for ... in 循环遍历数组。
<html> <body> <script type="text/javascript"> var x var mycars = new Array() mycars[0] = "Saab" mycars[1] = "Volvo" mycars[2] = "BMW" for (x in mycars) { document.write(mycars[x] + "<br />") } </script> </body> </html>
应用可见这里:http://caibaojian.com/js-max-repeat.html
注意一:for in循环不会按照属性的下标来排列输出。http://www.cnblogs.com/rubylouvre/p/3396042.html
"first":"first","zoo":"zoo","2":"2", "34":"34", "1":"1", "second":"second" }; for (var i in obj) { console.log(i); }; 输出: 1 2 34 first zoo second
执行时按chrome执行,先把当中的非负整数键提出来,排序好输出,然后将剩下的定义时的顺序输出。由于这个奇葩的设定,让avalon的ms-with对象排序不按预期输出了。只能强制用户不要以纯数字定义键名。
实例1:在数组的原型对象上定义了一个新的属性,使用for循环没出现问题
function getNewArray(){ var array=[1,2,3,4,5]; Array.prototype.age=13; var result = []; for(var i=0;i<array.length;i++){ result.push(array[i]); } alert(result.join('')); }
实例2:采用了for in循环,但是给我们期望的一样还是得到了12345的正确结果
//code from http://caibaojian.com/js-loop-for-in.html function getArrayTwo(){ var array=[1,2,3,4,5 ]; var result=[]; for(var i in array){ result.push(array[i]); } alert(result.join('')); }
实例3:给原型添加属性之后,默认情况下枚举,最后输出1234513
function getNewArrayTwo(){ var array=[1,2,3,4,5 ]; Array.prototype.age=13; var result=[]; for(var i in array){ result.push(array[i]); } alert(result.join('')); }
所以建议不要对数组执行for in循环,事实上,在高性能javascript这本书中,也强调了for in循环的不好,因为它总是会访问该对象的原型,看下原型上是否有属性,这在无意中就给遍历增加了额外的压力。
解决方法:
如果某个对象具有给定名称的属性,那么Object.prototype.hasOwnProperty(name)返回true。如果该对象是从原型链中继承了该属性,或者根本没有这样的一个属性,则返回false。通过hasOwnProperty限定for in循环在当前中遍历,而不用去考虑它的原型属性。
function finalArray(){ var array=[1,2,3,4,5 ]; Array.prototype.age=13; var result=[]; for(var i in array){ if(array.hasOwnProperty(i)){ result.push(array[i]); } } alert(result.join('')); }
注意事项:
1.有一部分浏览器,例如早期的safari浏览器,不支持这个方法
2.对象经常被用作哈希值,这就是存在hasOwnProperty被另外的属性屏蔽的风险(但是我估计没有人那么无聊使用这个属性)
转载于:https://www.cnblogs.com/lzm1989/p/5967832.html
javascript中的for in循环和for循环的使用相关推荐
- 在JavaScript中逐个遍历数组?
如何使用JavaScript遍历数组中的所有条目? 我以为是这样的: forEach(instance in theArray) 其中theArray是我的数组,但这似乎是不正确的. #1楼 如果您不 ...
- django中的for循环_深入了解 JavaScript 中的 for 循环
在ECMAScript5(简称 ES5)中,有三种 for 循环,分别是: 简单for循环 for-in forEach 在2015年6月份发布的ECMAScript6(简称 ES6)中,新增了一种循 ...
- javascript中for循环和setTimeout同时使用,出现的问题
javascript中for循环和setTimeout同时使用,出现的问题 for循环代码 <!DOCTYPE html> <html lang="en"> ...
- JavaScript中for..in循环陷阱介绍
for...in循环中的循环计数器是字符串,而不是数字它包含当前属性的名称或当前数组元素的索引,下面有个不错的示例大家可以参考下 大家都知道在JavaScript中提供了两种方式迭代对象: (1)f ...
- es6 依赖循环_探索 JavaScript 中的依赖管理及循环依赖
我们通常会把项目中使用的第三方依赖写在 package.json 文件里,然后使用 npm .cnpm 或者 yarn 这些流行的依赖管理工具来帮我们管理这些依赖.但是它们是如何管理这些依赖的.它们之 ...
- Javascript中for循环
在ECMAScript5(简称 ES5)中,有三种 for 循环,分别是: 简单for循环 for-in forEach 在2015年6月份发布的ECMAScript6(简称 ES6)中,新增了一种循 ...
- php for循环in的用法,JavaScript中for in循环是如何使用的?需要注意些什么?
大家都知道在JavaScript中提供了两种方式迭代对象: (1)for 循环: (2)for..in循环: 使用for循环进行迭代数组对象,想必大家都已经司空见惯了.但是,使用for.. in循环时 ...
- php event loop,理解javascript中的事件循环(Event Loop)
背景 在研究js的异步的实现方式的时候,发现了JavaScript 中的 macrotask 和 microtask 的概念.在查阅了一番资料之后,对其中的执行机制有所了解,下面整理出来,希望可以帮助 ...
- Javascript中的循环变量声明,到底应该放在哪儿?
不放走任何一个细节.相信很多Javascript开发者都在声明循环变量时犹 豫过var i到底应该放在哪里:放在不同的位置会对程序的运行产生怎样的影响?哪一种方式符合Javascript的语言规范?哪 ...
- Javascript中的条件语句和循环语句
Javascript条件语句有以下几种: 单项条件结构 (if条件语句) 双向条件结构 (if...else条件语句) 多项条件结构 (switch条件语句) If条件语句的语法如下: if (exp ...
最新文章
- Elasticsearch 深入3
- oracle with和insert结合使用
- pku3277 City Horizon.(离散化+二分查找)
- Java编程:哈希表
- 凸二次规划(convex quadratic programming)问题
- 使用vue-video-player播放视频 一个页面多个视频,并且只能唯一播放
- 社群运营的八大变现模式
- HDU5510 Bazinga(KMP)
- 图解CSS3 Flexbox属性
- navicat 关于orcale新建表空间,用户和权限分配
- 【C标准库】通过locale.h设置美元的格式
- python读书心得体会_Python学习心得体会
- 什么是RC高通滤波电路
- 【19考研】计算机/软件等专业调剂信息集合!【完结版】
- RabbitMQ:Consumers的介绍和使用
- 链家网二手房数据分析(承接上篇爬虫)
- 维视智造2023届校招火热进行中 快来加入我们
- Springboot+MySQL+VUE实现的在线教育网站源码+视频教程(Springboot微服务架构)
- 开源项目piwik搭建
- Java五子棋课程设计
热门文章
- Java 分布式 RPC 框架性能大比拼,Dubbo 排第几?
- Github标星2w+,热榜第一,如何用Python实现所有算法
- Java线程详解(18)-障碍器
- Java线程详解(3)-线程栈模型与线程的变量
- React 应用的性能优化思路
- C++基础汇总(一)
- 【Scratch】青少年蓝桥杯_每日一题_1.25_投球
- 黑白子交换c语言思路,递归 算法思路和优化和简单实现: 黑白子交换
- rocm平台_痛击NV CUDA!AMD ROCm开放计算平台瓜熟蒂落
- 用html标记语言,HTML标记语言——引用