javascript中的几种遍历方法浅析
1. for...in 用于对数组或者对象的属性的可枚举属性进行循环操作。注意该对象来自原型链上的可枚举属性也会被循环。下面看例子
var arr = ["lee","hello","zhangsan"];
for(var i in arr) {
console.log(arr[i]);//lee hello zhangsan
}
数组也是对象 也可以添加自己的属性 我们为arr添加一个name属性
arr.name = “安妮宝贝”
for(var i in arr) {
console.log(arr[i]);//lee hello zhangsan 安妮宝贝
}
那么怎么理解该对象来自原型链上的可枚举属性也会被循环?看下面的例子
var bar = {a:1,b:2,c:3};
function foo() {
this.color = "red";
}
foo.prototype = bar;
var obj = new foo();
for(var prop in obj){
console.log("o."+prop+"="+obj[prop])//o.color = red o.a = 1 o.b =2 o.c = 3
}
最后一个例子复制代码运行一下看看结果
<ul id="box">
<li class="child">1</li>
<li class="child">2</li>
<li class="child">3</li>
<li class="child">4</li>
</ul>
<script>
var ul = document.querySelector("#box");
var li = ul.querySelectorAll(".child");
for(var i in li) {
console.log(li[i]);
li[i].onclick = function() {
alert("hello")
}
}
</script>
2.forEach是ES5中操作数组的一种方法,主要功能是遍历数组直接看例子
var arr = ["zhangsan","lisi","wangwu"];
arr.name ="sdfsdfsdf";
arr.forEach(function(element){
console.log(element)// zhangsan lisi wangwu
}) //复制下面的例子看看结果 你就会理解forEach
var a = ['A', 'B', 'C'];
a.forEach(function (element, index, array) {
// element: 指向当前元素的值
// index: 指向当前索引
// array: 指向Array对象本身
alert(array);
alert(element);
alert(index);
});
3. for...of 你只需要记住以下三点
- 这是最简洁方便遍历数组的方法
- 避开了for...in循环的所有缺陷
- 与for each不同的是它可以正确响应break continue 和return语句
- 可以循环字符串
var str = "hello"
for(var x of str) {
console.log(x)// h,e,l,l,o
}
简单的例子说明for in for of的不同
var arr = ["zhangsan","lisi","wangwu"]
for (var j of arr){
console.log(j)// zhangsan lisi wangwu
}
var arr = ["zhangsan","lisi","wangwu"]
for (var j in arr){
console.log(j)// 1 2 3
以上各位看官可以看出来了吧。for in 操作数字只是返回索引 for of 返回的是值
4 Object.keys()
未完待续
javascript中的几种遍历方法浅析的更多相关文章
- Hashtable类中的四种遍历方法对比
要遍历一个Hashtable,api中提供了如下几个方法可供我们遍历: keys() - returns an Enumeration of the keys of this Hashtable ke ...
- JavaScript 中的12种循环遍历方法
原文:JavaScript 中的12种循环遍历方法 题目:请介绍 JavaScript 中有哪些循环和遍历的方法,说说它们的应用场景和优缺点? 1.for 循环 let arr = [1,2,3];f ...
- Jquery中each的三种遍历方法
Jquery中each的三种遍历方法 $.post("urladdr", { "data" : "data" }, function(dat ...
- Java中Map的三种遍历方法
Map的三种遍历方法: 1. 使用keySet遍历,while循环: 2. 使用entrySet遍历,while循环: 3. 使用for循环遍历. 告诉您们一个小秘密: (下↓面是测试代码,最爱看 ...
- 深入了解JavaScript中的Symbol的使用方法
这篇文章主要介绍了深入了解JavaScript中的Symbol的使用方法,本文针对ES6版本的JS进行讲解,需要的朋友可以参考下 Symbol 是什么? Symbols 不是图标,也不是指在代码中可以 ...
- 探究JavaScript中的五种事件处理程序
探究JavaScript中的五种事件处理程序 我们知道JavaScript与HTML之间的交互是通过事件实现的.事件最早是在IE3和Netscape Navigator 2中出现的,当时是作为分担服务 ...
- java 完全二叉树的构建与四种遍历方法
本来就是基础知识,不能丢的太干净,今天竟然花了那么长的时间才写出来,记一下. 有如下的一颗完全二叉树: 先序遍历结果应该为:1 2 4 5 3 6 7 中序遍历结果应该为:4 2 5 ...
- JavaScript中的三种弹出对话框
学习过js的小伙伴会发现,我们在一些实例中用到了alert()方法.prompt()方法.prompt()方法,他们都是在屏幕上弹出一个对话框,并且在上面显示括号内的内容,使用这种方法使得页面的交互性 ...
- 简单了解JS中的几种遍历
忙了好一段时间,项目上线后终于有那么一点点空档期静下来整理一些问题了.当我们在开发项目的时候,用到遍历的地方肯定少不了,那么我们有那么多的遍历方法,在不同情况下用那种方法会更优雅而且还没bug呢? 首 ...
随机推荐
- (三目运算符)PHP中问号?和冒号: 的作用
<表达式1>?<表达式2>:<表达式3>; "?"运算符的含义是: 先求表达式1的值, 如果为真, 则执行表达式2,并返回表达式2的结果 ; 如 ...
- Asp.Net 常用工具类之加密——对称加密DES算法(2)
又到周末,下午博客园看了两篇文章,关于老跳和老赵的程序员生涯,不禁感叹漫漫程序路,何去何从兮! 转眼毕业的第三个年头,去过苏州,跑过上海,从一开始的凌云壮志,去年背起行囊默默回到了长沙准备买房,也想有 ...
- JS入门(四)
接之前一篇的函数.写之前的函数的时候讲的比较笼统,在这重新写一下函数的内容. 函数: 之前提过,函数就是代码复用的一种机制或是将代码封装成功能的代码段.函数的声明在这边就不多提了,因为相对来说比较简单 ...
- 1295: [SCOI2009]最长距离
1295: [SCOI2009]最长距离 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 960 Solved: 498[Submit][Status ...
- 算法模板——sap网络最大流 1(非递归+邻接矩阵)
实现功能:首行输入N,M,S,T,代表这张图N个点,M条边,源点为S,汇点为T:接下来T行输入个边的出发点.终点和权值:输出最大流 原理:sap网络流算法(详见百度百科,个人觉得这个模板已经不错了,虽 ...
- MD5加密 32位
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo } p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; ...
- jsp想js,action传值
1.struts2 action如何向JSP的JS函数传值 action中定义变量 public class TestAction extends ActionSupport implements S ...
- protected private public 的区别
1.public,protected,private是Java里用来定义成员的访问权限的,另外还有一种是"default",也就是在成员前不加任何权限修饰符.如: publi ...
- Mac 上的 outlook 一直让输入密码
Mac 上的 outlook 即便输入了正确的密码,依然提示密码错误,让重新输入,需要输入多遍之后才能连上服务器. 出现这个问题的原因可能是证书过期了. 解决方式如下: 1.找到 2. 删掉 Exch ...
- JsonCpp(C++程序使用)
C++ json解析库 github C++: Makefile目录cmd:make 得到build 得到.a静态库 Eclipse引入头文件 (include目录) 引入.a静态库 编译设置: O ...