javascript中for/in循环及使用技巧


Posted in Javascript onSeptember 01, 2015

JavaScript 支持不同类型的循环:

for - 循环代码块一定的次数

for/in - 循环遍历对象的属性

while - 当指定的条件为 true 时循环指定的代码块

do/while - 同样当指定的条件为 true 时循环指定的代码块

1. in运算符:要求其左边的运算数是一个字符串,或可以被转换为字符串,右边的运算数是一个对象或数组。如果该运算符左边的值是右边对象的一个属性名,则返回true。

例如:

var point={x:1,y:2}; //对象直接量
   var has_x="x" in point; //返回true
   var has_z="z" in point; //返回false
   var ts="toString" in point;//返回true,toString为继承方法

   2. for/in语句:语法,

for (variable in object)
                           statement;

      提供了一种遍历对象属性的方法。

例:

for(var prop in my_object) {
    document.write("name:"+prop+";value:"+my_object[prop],"<br>");
  }

      javascript的数组是一种特殊的对象,因此for/in循环可以像枚举对象属性一样枚举数组下标。

可以把一个对象的所有属性名复制到一个数组中,

例:

var o= {x:1,y:2,z:3};
  var a=new Array();
  var i=0;
  for (a[i++] in o) 
  ;//空语句,用于初始化数组

    3. in运算符与for/in语句不同,for/in语句in的左边可以是声明一个变量的var语句,数组的一个元素或者是对象的一个属性,不能使字符串。

    4. 数组常用的存取属性运算符是“[]”,而不是“.”。使用“[]”来命名属性名师字符串值,是动态的,可以在运行时改变,而不是一个标识符“.”。

例:

var stock_name= get_stock_name_from_user();//从用户处获取股票名
  var share= get_number_of_shares();//得到股票数量
  portfolio[stock_name]= share;//动态地创建数组股票,并为每支股票赋值
  将该例子与for/in循环一起使用,当用户输入了他的投资组合,可以计算当前总值
  var value= 0;
  for (stock in portfolio) {
    value +=get_share_value(stock)*portfolio[stock];
  }

stock存取的是每支股票的名字。     

portfolio[stock]存取的是每支股票的数量。

for-in循环

功能:遍历对象属性,把属性名和属性值都提出来

var obj = {
 "key1":"value1",
 "key2":"value2",
 "key3":"value3"
};
function EnumaKey(){
 for(var key in obj ){
  alert(key);
 }
}
function EnumaVal(){
 for(var key in obj ){
  alert(obj[key]);
 }
}
EnumaKey(obj)
//key1 key2 key3
EnumaVal(obj)
//value1 value2 value3

数组也可以这样遍历,但不推荐,因为不能保证顺序,而且如果在Array的原型上添加了属性,这个属性也会被遍历出来。

for-in循环应该用在非数组对象的遍历上,使用for-in进行循环也被称为“枚举”。

从技术上将,你可以使用for-in循环数组(因为JavaScript中数组也是对象),但这是不推荐的。因为如果数组对象已被自定义的功能增强,就可能发生逻辑错误。另外,在for-in中,属性列表的顺序(序列)是不能保证的。所以最好数组使用正常的for循环,对象使用for-in循环。

Javascript 相关文章推荐
javascript appendChild,innerHTML,join性能比较代码
Aug 29 Javascript
javascript Firefox与IE 替换节点的方法
Feb 24 Javascript
js 获取时间间隔实现代码
May 12 Javascript
JavaScript中的console.group()函数详细介绍
Dec 29 Javascript
jquery通过ajax加载一段文本内容的方法
Jan 15 Javascript
微信小程序商城项目之商品属性分类(4)
Apr 17 Javascript
JS动画定时器知识总结
Mar 23 Javascript
vue完成项目后,打包成静态文件的方法
Sep 03 Javascript
Vue插槽原理与用法详解
Mar 05 Javascript
javascript实现对话框功能警告(alert 消息对话框)确认(confirm 消息对话框)
May 07 Javascript
模块化react-router配置方法详解
Jun 03 Javascript
JS中的const命令你真懂它吗
Mar 08 Javascript
jQuery仿淘宝网产品品牌隐藏与显示效果
Sep 01 #Javascript
JavaScript中this详解
Sep 01 #Javascript
JS实现的自定义右键菜单实例二则
Sep 01 #Javascript
jQuery中常用的遍历函数用法实例总结
Sep 01 #Javascript
jquery常用函数与方法汇总
Sep 01 #Javascript
js+CSS实现模拟华丽的select控件下拉菜单效果
Sep 01 #Javascript
JQuery自适应窗口大小导航菜单附源码下载
Sep 01 #Javascript
You might like
MYSQL数据库初学者使用指南
2006/11/16 PHP
PHP 利用Mail_MimeDecode类提取邮件信息示例
2014/01/26 PHP
基于PHP实现的事件机制实例分析
2015/06/18 PHP
PHP url的pathinfo模式加载不同控制器的简单实现
2016/08/12 PHP
yii2.0整合阿里云oss删除单个文件的方法
2017/09/19 PHP
js 实现无干扰阴影效果 简单好用(附文件下载)
2009/12/27 Javascript
ASP.NET jQuery 实例9  通过控件hyperlink实现返回顶部效果
2012/02/03 Javascript
详解JavaScript中的构造器Constructor模式
2016/01/14 Javascript
浅谈JavaScript事件绑定的常用方法及其优缺点分析
2016/11/01 Javascript
jQuery使用正则表达式替换dom元素标签用法示例
2017/01/16 Javascript
EsLint入门学习教程
2017/02/17 Javascript
nodejs实现范围请求的实现代码
2018/10/12 NodeJs
创建Vue项目以及引入Iview的方法示例
2018/12/03 Javascript
JavaScript之Blob对象类型的具体使用方法
2019/11/29 Javascript
[04:09]2018年度DOTA2社区贡献奖-完美盛典
2018/12/16 DOTA
[09:13]DOTA2-DPC中国联赛 正赛 Ehome vs Magma 选手采访 1月19日
2021/03/11 DOTA
Python验证码识别的方法
2015/07/10 Python
python3实现读取chrome浏览器cookie
2016/06/19 Python
Python系统监控模块psutil功能与经典用法分析
2018/05/24 Python
Python面向对象基础入门之设置对象属性
2018/12/11 Python
Python设计模式之享元模式原理与用法实例分析
2019/01/11 Python
python使用adbapi实现MySQL数据库的异步存储
2019/03/19 Python
Python 函数用法简单示例【定义、参数、返回值、函数嵌套】
2019/09/20 Python
在Python中预先初始化列表内容和长度的实现
2019/11/28 Python
pyCharm 设置调试输出窗口中文显示方式(字符码转换)
2020/06/09 Python
使用Python实现微信拍一拍功能的思路代码
2020/07/09 Python
详解使用CSS3的@media来编写响应式的页面
2017/11/01 HTML / CSS
利用纯CSS3实现tab选项卡切换示例代码
2016/09/21 HTML / CSS
html5 button autofocus 属性介绍及应用
2013/01/04 HTML / CSS
【HTML5】3D模型--百行代码实现旋转立体魔方实例
2016/12/16 HTML / CSS
意大利包包和行李箱销售网站:Bagaglio.it
2021/03/02 全球购物
学生宿舍管理制度
2014/01/30 职场文书
新闻传媒系求职信范文
2014/04/19 职场文书
2015年度优秀员工推荐信
2015/03/23 职场文书
2015年安全月活动总结
2015/03/26 职场文书
爱国教育主题班会
2015/08/14 职场文书