源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

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

  • 时间:2021-08-11 22:50 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:javascript中for/in循环及使用技巧
JavaScript 支持不同类型的循环: for - 循环代码块一定的次数 for/in - 循环遍历对象的属性 while - 当指定的条件为 true 时循环指定的代码块 do/while - 同样当指定的条件为 true 时循环指定的代码块 [b]1. in运算符[/b]:要求其左边的运算数是一个字符串,或可以被转换为字符串,右边的运算数是一个对象或数组。如果该运算符左边的值是右边对象的一个属性名,则返回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为继承方法
[b]   2. for/in语句:语法,[/b] 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) 
  ;//空语句,用于初始化数组
   [b]3. in运算符与for/in语句不同[/b],for/in语句in的左边可以是声明一个变量的var语句,数组的一个元素或者是对象的一个属性,不能使字符串。    [b] 4. 数组常用的存取属性运算符是“[]”,而不是“.”。[/b]使用“[]”来命名属性名师字符串值,是动态的,可以在运行时改变,而不是一个标识符“.”。 例:
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]存取的是每支股票的数量。 [b]for-in循环[/b] 功能:遍历对象属性,把属性名和属性值都提出来
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循环。
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部