我们一般来说,使用for…in来遍历对象,使用for…of来遍历数组
总之,for…in 循环主要是为了遍历对象而生,不适用于遍历数组
for…of 循环可以用来遍历数组、类数组对象,字符串、Set、Map 以及 Generator 对象
我们强烈建议不要使用for…in来遍历数组
为什么???
因为for…in遍历的是对象的key或者是数组的下标。当然最重要的原因是,他会到原型链上寻找,遍历其中新增加的属性的key值
for of遍历的是数组元素值,
for in 遍历的是数组的索引(即键名)
for of遍历的只是数组内的元素,
for in 遍历的不只是数组内的元素,还有其新增的原型属性和索引
for of 遍历
Array.prototype.method=function(){
console.log(this.length);
}
var myArray=[11,21,41,51,61,71]
myArray.name="数组";
for (var value of myArray) {
console.log(value);
}
//输出数组每项的值:11,21,41,51,61,71
for in 遍历
Array.prototype.method=function(){
console.log(this.length);
}
var myArray=[11,21,41,51,61,71]
myArray.name="数组";
for (var value in myArray) {
console.log(value);
}
// 输出数据的下标以及新增属性和方法: 0,1,2,3,4,5,method,name
总结
1因为我们的for…in会遍历出拓展的方法和属性,所以当我们对Array进行扩展的时候,会打印出来,就比较的尴尬,不知所措
2我们的for…in得到的是key值,如果是数组的话,得到的是字符串类型的key值,如果这个时候进行下标操作的话,可能会出现奇奇怪怪的问题
for…in和for…of都可以使用break,continue的操作
文章浏览阅读759次。 声明:以下仅为个人的一些总结和随写,如有不对之处,还请看到的网友指出,以免误导。 (详细的配置方案请google,这里只说解决方案。) 1、熟悉几个组件1.1、apache —— 它是Apache软件基金会的一个开放源代码的跨平台的网页服务器,属于老牌的web服务器了,支持基于Ip或者域名的虚拟主机,支持代理服务器,支持安全Socket层(SSL)等等,目..._ha:/鉁攃nlnxx5m
文章浏览阅读997次。debian10 安装 介绍 (Introduction)Composer is a popular dependency management tool for PHP, created mainly to facilitate installation and updates for project dependencies. It will check which other packag..._debian -bash: curl: command not found
文章浏览阅读902次。jsp中标签内引入js文件在body里面使用页面即可显示在线编辑器了在计算中使用CKEDITOR.instances.replyBody.getData()即可取到在线编辑器中的内容下面附上ckeditor编辑器的使用api连接ckeditor api
文章浏览阅读1.5w次。librdkafka问题总结librdkafka是kafka官方推荐的c client端开源库。本文基于librdkafka_0.8, 对该库作简要介绍,同时对使用过程中遇到的一些问题做个总结一、模块介绍librdkafka主要分为config,topic,produce,consume几个模块config依据kafka相应的config文件字段定义 先通过默认配置文件创建confg对象,再通过c_rdkafka::topic::partition_ua
文章浏览阅读148次。 Farmer John has been informed of the location of a fugitive cow and wants to catch her immediately. He starts at a point N (0 ≤ N ≤ 100,000) on a number line and the cow is at a point K (0 ≤ K ≤ 10..._解救小哈
文章浏览阅读1.8k次。当我们从后台获取回来的数据是一个数组时,而且每个元素是一个对象,对象的层级不确定,需要使用递归循环遍历所有的子元素var tdata=[ { "code": "has Value Domain Member", "value": "未婚", "properties": [ { "code": "MDM VD Member PKID", ..._js递归循环数组
文章浏览阅读139次。QQ交流群:121160124关注微信公众号:邂逅最美的时光在Linux(CentOS7)上安装MongoDB的社区版安装MongoDB可以rpm方式和tar包方式安装一、使用.rpm包(推荐)1.配置包管理系统(yum)。创建一个/etc/yum.repos.d/mongodb-org-4.0.repo文件,以便您可以使用yum以下命令直接安装MongoDB:vi..._linux系统(rpm包)如何安装mongodb
文章浏览阅读664次。Boot Loader 是在操作系统内核运行之前运行的一段小程序。通过这段小程序,我们可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境。通常,Boot Loader 是严重地依赖于硬件而实现的,特别是在嵌入式世界。因此,在嵌入式世界里建立一个通用的 Boot Loader 几乎是不可能的。尽管如此,我们仍然可以对 B_bootload能输出打印吗?
文章浏览阅读1.3k次。LVM管理磁盘创建pv[root@owenz ~]# pvcreate /dev/sdb Physical volume "/dev/sdb" successfully created[root@owenz ~]# pvcreate /dev/sdc Physical volume "/dev/sdc" successfully created_server version: 5.5.58
文章浏览阅读4.7k次。代码混淆ProGuard是ADT自带的apk混淆器,它的用途有:1、压缩apk包的大小,能删除无用的代码,并简化部分类名和方法名。2、加大破解源码的难度,因为部分类名和方法名被重命名,使得程序逻辑变得难以理解。代码混淆的规则在proguard-project.txt中编写,然后在project.properties补充规则文件的路径,如下所示:proguard.conf_android packageinfo混淆
文章浏览阅读1k次。父子组件通信根组件data传子组件根组件data传子组件在子组件使用props属性,然后在使用组件标签时绑定props里的属性到根组件的data数据,这样就可以在模板里使用props的属性当作根组件的data数据使用了<head> <meta charset="utf-8"> <title></title> <script src="https://cdn.staticfile.org/vue/2.4.2/vue.min.js"><_父子组件通信
文章浏览阅读1.3k次。S3C2440 GPIO通用输入输出接口的简称,S2440一共有130个GPIO口,分为A~J共9组:GPA,GPB,GPC……GPJ;通过设置相应的寄存器,可以选择某个GPIO口是用于输入,输出还是特定其他特殊功能。例如可以设置GPH6口用于输入输出,或者是串口;每组GPIO(GPA-GPJ),都可以通过3个寄存器来控制与访问,这三个寄存器分别是GPxCON:GPIO配置寄存器----..._keyled驱动程序设计