JavaScript中利用for循环遍历数组
作者:浪迹灬天涯 发布时间:2024-03-17 02:21:54
标签:js,for,遍历数组
先看一段代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<script>
// 一个普通的数组
var arr =[3,5,2,6];
// 普通的for 循环遍历
for(var i = 0 ; i < arr.length; i++){
console.log(i,"类型:"+typeof i,arr[i]);
}
// 用for in 遍历数组
for(var k in arr){
console.log(k,"类型:"+typeof k,arr[k]);
}
</script>
</body>
</html>
这段代码显示出了 一点 for循环遍历数组 和for in 循环遍历 数组的一点区别:
标准的for循环中的i是number类型,表示的是数组的下标,但是foreach循环中的i表示的是数组的key是string类型。
这还不是坑,只是一点区别。
再看一段代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<script>
// 一个普通的数组
var arr =[3,5,2,6];
// 在数组原型上扩展一个方法
Array.prototype.extend = function(){
console.log("在数组原型扩展一个方法");
}
// 普通的for 循环遍历
for(var i = 0 ; i < arr.length; i++){
console.log(i,"类型:"+typeof i,arr[i]);
}
// 用for in 遍历数组
for(var k in arr){
console.log(k,"类型:"+typeof k,arr[k]);
}
</script>
</body>
</html>
这段代码就是在上边的代码的基础上,为Array做了一下扩充。很简单,只是添加了一个函数。但是我们来看运行会出现了什么情况:
输出的结果中,多出了一行,这一行就是我们扩展的一个函数,不是我们定义在数组中的值。到此这个问题就出来了。
综上所述,用for...in...在通常情况下确实可以正确运行。
但是如果我们在项目采用的是用foreach遍历数组,假设有一天谁不小心自己为了扩展js原生的Array类,或者引入一个外部的js框架也扩展了原生Array。那问题就来了。
所以最好还是用for循环遍历数组
0
投稿
猜你喜欢
- 用selenium做自动化,有时候会遇到需要模拟鼠标操作才能进行的情况,比如单击、双击、点击鼠标右键、拖拽等等。而selenium给我们提供
- 图片人脸检测#coding=utf-8import cv2import dlibpath = "img/meinv.png&quo
- # vi mysqlusers.txtcreate database dataname;grant all privileges on da
- 本文实例讲述了朴素贝叶斯算法的python实现方法。分享给大家供大家参考。具体实现方法如下:朴素贝叶斯算法优缺点优点:在数据较少的情况下依然
- 在Class内部,可以有属性和方法,而外部代码可以通过直接调用实例变量的方法来操作数据,这样,就隐藏了内部的复杂逻辑。但是,从前面Stude
- 本文所依赖的环境为:进程和线程的概念进程概念我们想运行一个程序,首先会将该程序从存储介质上通过IO总线加载进内存中,而后再通过cpu进行调度
- 非常好的边框样式设置工具,使用该工具您可以很方便的为DIV设置简单的边框样式,如果放在DW中会更好。会制作DW插件的高手,请帮忙制作成DW插
- 忘记密码是一件很头疼的事情,mac安装mysql初始密码忘记怎么办?具体解决办法如下http://dev.mysql.com/doc/ref
- mutilprocess像线程一样管理进程,这个是mutilprocess的核心,他与threading很是相像,对多核CPU的
- 1.项目目录及文件说明:manage.pydjango中的一个命令行工具,管理django项目;__init__.py空文件,告诉pytho
- 字体设计是人类商业活动的需求,它随着时代和科学技术的进步而不断地变化着。被广泛应用于网络生活的各个方面。现代字体设计在电脑技术的应用中已经深
- 本地使用Navicat连接 错误描述2013-Lost connection to MySQL server at ‘reading ini
- 本文实例讲述了python获取图片颜色信息的方法。分享给大家供大家参考。具体分析如下:python的pil模块可以从图片获得图片每个像素点的
- 开发的很多场景中都会用到手机号的校验和验证码的校验,具体实现如下<div> <input type="text&
- 简介表单的操作是Web程序开发中最核心的模块之一,绝大多数的动态交互功能都是通过表单的形式实现的。本文会教大家实现简单的表单操作。普通表单提
- bitbucket 搭建搭建过程如下所示:1 jdk 8如果有的话就不用安装了,此处采用rpm方式安装(不用配置环境变量)把下载好的文件放在
- 本文实例讲述了C# Ado.net读取SQLServer数据库存储过程列表及参数信息的方法。分享给大家供大家参考,具体如下:得到数据库存储过
- 在我们制作主页的过程中,用到表格的地方非常多,灵活运用表格技巧可以为我们的网页增色不少,这里我就详细介
- 1、安装MSSQL时使用混合模式,当然SA密码最好不能为空,在SQL2005中,可以对SA这个超级用户名进行修改或删除。use master
- DROP TABLE IF EXISTS [TEMP_TABLE_NAME]; create temporary table [TEMP_T