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

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

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循环。

转载于:https://www.cnblogs.com/good10000/p/4778114.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/109350.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 最新kali之dirbuster

    最新kali之dirbuster描述 目录扫描工具 DirBuster 支持全部的 Web 目录扫描方式 它既支持网页爬虫方式扫描 也支持基于字典暴力扫描 还支持纯暴力扫描 该工具使用 Java 语言编写 提供命令行 Headless 和图形界面 GUI 两种模式 其中 图形界面模式功能更为强大 用户不仅可以指定纯暴力扫描的字符规则 还可以设置以 URL 模糊方式构建网页路径 同时 用户还对网页解析方式进行各种定制 提高网址解析效率 选项 h 显示帮助信息 H 以无头模式 无 GUI 启动 DirBuster 报告将在退出时自动保存

    2025年11月29日
    3
  • Centos7安装Postgresql 13 详细步骤(远程连接)

    Centos7安装Postgresql 13 详细步骤(远程连接)

    2021年6月4日
    153
  • Random随机数nextInt(n)的使用

    Random随机数nextInt(n)的使用nextInt(intn) 方法用于获取一个伪随机,在0(包括)和指定值(不包括),从此随机数生成器的序列中取出均匀分布的int值。声明以下是对java.util.Random.nextInt()方法的声明。publicintnextInt(intn)参数n–这是结合于该随机数返回。必须为正数。返回值在方法调用返回

    2022年7月22日
    12
  • 使用PHP password_hash()加密,再也不怕被拖库了

    使用PHP password_hash()加密,再也不怕被拖库了

    2022年2月12日
    41
  • 完全背包问题(详细解答)

    完全背包问题(详细解答)首先完全背包问题需要01背包问题做铺垫,如果读者01背包问题没有解决,一定要理解之后,在看完全背包问题,包括01背包的优化!这里是01背包这里是01背包的全部优化好,我们开始完全背包!完全背包定义有N种物品和一个容量为V的背包,每种物品都有无限件可用。第i种物品的体积是v[i],价值是val[i]。求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和最大。从定义中可以看出,与01背包的区别01背包最多只能拿一件物品,完全背包则不然,只要空间够多,一种物品我可以拿n件!01

    2022年6月15日
    31
  • win10 wlan wifi 显示 无Internet连接,安全 连不上网;网络连接显示小地球,无Internet连接 但能上网,反正wlan的 各种病症,猛药解决

    win10 wlan wifi 显示 无Internet连接,安全 连不上网;网络连接显示小地球,无Internet连接 但能上网,反正wlan的 各种病症,猛药解决1、暴力重启:直接按电源键强制关机再开机;2、右键小地球,疑难解答并且执行3、360网络修复4、改这里的配置5、计算机管理,服务改这里的配置都改成自动6、win+rregedit\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NlaSvc\Parameters\Internet这个值改成17、netshwinsockresetcatalognetshinti…

    2022年7月27日
    10

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号