为什么for in循环不适合用于数组
首先一点无关的,使用(var i in a) 而不是( i in a),除非你想创建全局变量。
第二点,for in 循环会忽略空的数组
- var a = [];
- a[5] = 5; // Perfectly legal JavaScript that resizes the array.
- for (var i=0; i<a.length; i++) {
- // Iterates over numeric indexes from 0 to 5, as everyone expects.
- }
- var a = [];
- a[5] = 5;
- for (var x in a) {
- // Shows only the explicitly set index of "5", and ignores 0-4
- }
第三,for in循环会对prototype属性进行循环。
- // Somewhere deep in your JavaScript library...
- Array.prototype.foo = 1;
- // Now you have no idea what the below code will do.
- var a = [1,2,3,4,5];
- for (var x in a){
- // Now foo is a part of EVERY array and
- // will show up here as a value of 'x'.
- }
最后一点,下面是最简单也是最快最好的方法
- for(var i = 0, length = array.length; i < length; i++)
总而言之,如果你想迭代循环一个对象的key,使用
for (var key in object)
如果你想迭代循环一个数组的元素,那么,使用
for(var i = 0, length = array.length; i < length; i++)
为什么for in循环不适合用于数组的更多相关文章
- 多重循环、缓冲区管理、数组(day06)
无法预知的数字叫随机数 rand标准函数可以用来获得随机数 为了使用这个标准函数需要包含stdlib.h头文件 srand标准函数用来设置随机数种子 这个函数把一个整数作为种子使用 不同的种子产生的随 ...
- php用压栈的方式,循环遍历无限级别的数组(非递归方法)
php用压栈的方式,循环遍历无限级别的数组(非递归方法) 好久不写非递归遍历无限级分类...瞎猫碰到死老鼠,发刚才写的1段代码,压栈的方式遍历php无限分类的数组... php压栈的方式遍历无限级别数 ...
- ***Redis hash是一个string类型的field和value的映射表.它的添加、删除操作都是O(1)(平均)。hash特别适合用于存储对象
http://redis.readthedocs.org/en/latest/hash/hset.html HSET HSET key field value (存一个对象的时候key存) 将哈希 ...
- 基于redis的分布式锁(不适合用于生产环境)
基于redis的分布式锁 1 介绍 这篇博文讲介绍如何一步步构建一个基于Redis的分布式锁.会从最原始的版本开始,然后根据问题进行调整,最后完成一个较为合理的分布式锁. 本篇文章会将分布式锁的实现分 ...
- 功能要求:定义一个两行三列的二维数组 names 并赋值,使用二重循环输出二维数组中的元素。
功能要求:定义一个两行三列的二维数组 names 并赋值,使用二重循环输出二维数组中的元素 names={{"tom","jack","mike&qu ...
- foreach循环时动态往数组里添加数据
今天在用TP做项目的时候遇到一个问题,foreach的时候需要动态往数组里添加数据,示例代码如下: $arr = array( array('id'=>'字符串1','name'=>'字符 ...
- 哪种代理适合用于Web数据采集
在Web数据采集中为了避免被服务器封锁而通过代理下载的情况很常见.但是,并非所有的代理都适合于Web数据采集.下面是鲲鹏数据的技术人员给出的说明. 根据HTTP代理的匿名性可以将其分为以下几种: ...
- 创建一个长度是5的数组,并填充随机数。使用for循环或者while循环,对这个数组实现反转效果
package day01; import java.util.Random; /** * 首先创建一个长度是5的数组,并填充随机数.使用for循环或者while循环,对这个数组实现反转效果 * @a ...
- css3的calc() css3的百分比减宽,减高,加,乘,除,适合用于后台的排版定位
css3的calc() css3的百分比减宽,减高,加,乘,除,适合用于后台的排版定位 浏览器支持IE9+.FF4.0+.Chrome19+.Safari6+ calc()语法非常简单,就像我们小时候 ...
随机推荐
- RESTful Api 身份认证中的安全性设计探讨
REST 是一种软件架构风格.RESTful Api 是基于 HTTP 协议的 Api,是无状态传输.它的核心是将所有的 Api 都理解为一个网络资源.将所有的客户端和服务器的状态转移(动作)封装到 ...
- mac打开.caj格式文件
以为用mac后使用会变得更方便些,写毕设时终于派上用场,可惜啊,mac竟然打不开.caj文件,这意味着什么?相信所有在做毕设的小伙伴们都能懂其中的凄凉.特别是硕士或博士的论文,你得从知网上下上百篇的文 ...
- 高级Java开发工程师
- topngroupcollector
分类的字段int f1 /* key: f1 * value: doc * size: top n */ map<int, doc>() if(map.size==n) buildOrde ...
- DataTable.select() 返回 DataTable
DataTable.select() 默认返回值为 DataRow[]数组 代码来自网络: /**/ /// <summary> /// 执行DataTable中的查询返回新的DataTa ...
- 九度OJ1077
#include <stdio.h> #include<stdlib.h> //最大子序列和问题,动态规划,公式为d(n)=max{d(n-1),0}+A[i] typedef ...
- gomoblie flappy 源码分析:游戏逻辑
本文主要讨论游戏规则逻辑,具体绘制技术请参看相关文章: gomoblie flappy 源码分析:图片素材和大小的处理 http://www.cnblogs.com/ghj1976/p/5222289 ...
- ios7 Cocos2dx 隐藏状态栏设置
环境: cocos2d-x 2.1.5 ios7.0 在info.plist 添加 UIViewControllerBasedStatusBarAppearance(View controll ...
- Mongdb操作嵌套文档
1.一个文档如下 db.posts.find() { "_id" : ObjectId("5388162dfc164ee1f39be37f"), "t ...
- Android--创建对话框AlertDialog
学习Android过程中发现showDialog().onCreateDialog()这些方法从Android4.0开始都过时了. 官方推荐使用DialogFragment类来创建对话框. 1)布局文 ...