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 相关文章推荐
jQuery基本过滤选择器使用介绍
Apr 18 Javascript
js添加table的行和列 具体实现方法
Jul 22 Javascript
jquery批量设置属性readonly和disabled的方法
Jan 24 Javascript
浅谈javascript中自定义模版
Jan 29 Javascript
javascript获取网页各种高宽及位置的方法总结
Jul 27 Javascript
jQuery实现元素的插入
Feb 27 Javascript
javascript 中Cookie读、写与删除操作
Mar 29 Javascript
详解Vue2.X的路由管理记录之 钩子函数(切割流水线)
May 02 Javascript
ES6新特性:使用export和import实现模块化详解
Jul 31 Javascript
JS对象序列化成json数据和json数据转化为JS对象的代码
Aug 23 Javascript
QQ跳转支付宝并自动领红包脚本(最新)
Jun 22 Javascript
vue prop属性传值与传引用示例
Nov 13 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
php运行出现Call to undefined function curl_init()的解决方法
2010/11/02 PHP
php导入大量数据到mysql性能优化技巧
2014/12/29 PHP
php计划任务之ignore_user_abort函数实现方法
2015/01/08 PHP
PHP文件读取功能的应用实例
2015/05/08 PHP
PHP cURL初始化和执行方法入门级代码
2015/05/28 PHP
js过滤数组重复元素的方法
2010/09/05 Javascript
解析javascript 实用函数的使用详解
2013/05/10 Javascript
JavaScript中window、doucment、body的解释
2013/08/14 Javascript
jQuery中prev()方法用法实例
2015/01/08 Javascript
移动端横屏的JS代码(beta)
2016/05/16 Javascript
AngularJS入门教程之AngularJS 模板
2016/08/18 Javascript
BootStrap Datetimepicker 汉化的实现代码
2017/02/10 Javascript
为JQuery EasyUI 表单组件增加焦点切换功能的方法
2017/04/13 jQuery
jQuery实现可兼容IE6的遮罩功能详解
2017/09/19 jQuery
vue如何在自定义组件中使用v-model
2018/05/14 Javascript
微信小程序自定义单项选择器样式
2019/07/25 Javascript
React+Redux实现简单的待办事项列表ToDoList
2019/09/29 Javascript
浅谈TypeScript 用 Webpack/ts-node 运行的配置记录
2019/10/11 Javascript
微信小程序整个页面的自动适应布局的实现
2020/07/12 Javascript
python解析中国天气网的天气数据
2014/03/21 Python
Python中关键字is与==的区别简述
2014/07/31 Python
python基础教程之基本数据类型和变量声明介绍
2014/08/29 Python
Python遍历目录并批量更换文件名和目录名的方法
2016/09/19 Python
python关于矩阵重复赋值覆盖问题的解决方法
2019/07/19 Python
python创建子类的方法分析
2019/11/28 Python
如何基于python实现画不同品种的樱花树
2020/01/03 Python
计算pytorch标准化(Normalize)所需要数据集的均值和方差实例
2020/01/15 Python
浅谈pymysql查询语句中带有in时传递参数的问题
2020/06/05 Python
解决PyCharm不在run输出运行结果而不是再Console里输出的问题
2020/09/21 Python
Vita Fede官网:在意大利手工制作,在纽约市设计
2019/10/25 全球购物
银行营业厅大堂经理岗位职责
2014/01/06 职场文书
房屋委托书范本
2014/04/04 职场文书
孝老爱亲模范事迹材料
2014/05/25 职场文书
户外活动总结
2015/02/04 职场文书
2015年农村党员干部主题教育活动总结
2015/03/25 职场文书
《用字母表示数》教学反思
2016/02/17 职场文书