Javascript之数组遍历
一、遍历数组的几种方式
1、for...in遍历数组,会遍历数组的索引和数组原型上的对象
2、for循环直接遍历
3、迭代器:forEach(遍历数组中所有的值,并忽略回调函数返回的值)、every(一直运行直到返回false)、some(一直运行直到返回true)等遍历
4、for...of直接遍历数组中的值
对于for...of,只要是可以迭代的对象都可以用for...of来遍历,也就是内部实现了iterator的对象
var arr = ["1", "4", "7", "9", "11"]
for(v of arr) {
console.log(v)
}
数组中内置@@iterator对象,使用方式如下:
var arr = [1, 2, 4]
var it = arr[Symbol.iterator]()
it.next()//{value: 1, done: false}
it.next()//{value: 2, done: false}
it.next()//{value: 4, done: true}
普通对象中没有实现@@iterator对象,但是我们可以给对象自定义@@iterator
利用Object.defineProperty来给对象中的属性定义特性,利用闭包来实现值的移位。
var obj = {
a: '1',
b: '5'
}
Object.defineProperty(obj, Symbol.iterator, {
enumerable: false,
writable: false,
configurable: true,
value: function() {
var o = this;
var idx = 0;
var ks = Object.keys(o)
return {
next: function() {
return {
value: o[ks[idx++]],
done: (idx >= ks.length)
}
}
}
}
})
var it = obj[Symbol.iterator]()
it.next()
it.next()
Javascript之数组遍历的更多相关文章
- Javascript 中 数组遍历 forin和forof 的区别
定义一个数组 let array = [1, 2, 3, 4]; for (let a in array){ console.log("遍历a的值 "+a+"”,数组中的 ...
- javascript 常见数组操作( 1、数组整体元素修改 2、 数组筛选 3、jquery 元素转数组 4、获取两个数组中相同部分或者不同部分 5、数组去重并倒序排序 6、数组排序 7、数组截取slice 8、数组插入、删除splice(需明确位置) 9、数组遍历 10、jQuery根据元素值删除数组元素的方)
主要内容: 1.数组整体元素修改 2. 数组筛选 3.jquery 元素转数组 4.获取两个数组中相同部分或者不同部分 5.数组去重并倒序排序 6.数组排序 7.数组截取slice 8.数组插入.删除 ...
- JavaScript 的 4 种数组遍历方法: for VS forEach() VS for/in VS for/of
我们有多种方法来遍历 JavaScript 的数组或者对象,而它们之间的区别非常让人疑惑.Airbnb 编码风格禁止使用 for/in 与 for/of,你知道为什么吗? 这篇文章将详细介绍以下 4 ...
- JavaScript中数组中遍历的方法
前言 最近看了好几篇总结数组中遍历方法的文章,然而"纸上得来终觉浅",决定此事自己干.于是小小总结,算是自己练手了. 各种数组遍历方法 数组中常用的遍历方法有四种,分别是: for ...
- JavaScript 数组遍历方法的对比
JavaScript 发展至今已经发展出多种数组的循环遍历的方法,不同的遍历方法运行起来那个比较快,不同循环方法使用在那些场景,下面将进行比较: 各种数组遍历的方法 for 语句 ,,,] , len ...
- Effective JavaScript Item 49 对于数组遍历,优先使用for循环,而不是for..in循环
本系列作为Effective JavaScript的读书笔记. 对于以下这段代码,能看出最后的平均数是多少吗? var scores = [98, 74, 85, 77, 93, 100, 89]; ...
- JavaScript:常用的一些数组遍历的方法
常用的一些遍历数组的方法: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> ...
- 【Javascript】JS遍历数组的三种方法:map、forEach、filter
前言 近一段时间,因为项目原因,会经常在前端对数组进行遍历.处理,JS自带的遍历方法有很多种,往往不加留意,就可能导致知识混乱的现象,并且其中还存在一些坑.前端时间在ediary中总结了js原生自带的 ...
- javascript数组遍历的几种常用方法性能分析对比
前言: 数组遍历有很多种方法,虽然不同方法有不同的特性及适用环境,除了普通飞for循环之外,for...in能直接输出数组元素的索引,for...of能直接输出数组元素的值,map则可以直接生成新的数 ...
随机推荐
- python三大框架之一(flask介绍)
Flask , Django, Tornado 是python中常用的框架,也是python的三大框架.它们的区别是:Flask: 轻量级框架: Django:重量级框架: Tornado:性能最好 ...
- Elasticsearch基本用法(1)--原生操作
2.2.创建索引 2.2.1.语法 创建索引的请求格式: 请求方式:PUT 请求路径:/索引库名 请求参数:json格式: { "settings": { "number ...
- LG4196 [CQOI2006]凸多边形
题意 题目描述 逆时针给出n个凸多边形的顶点坐标,求它们交的面积.例如n=2时,两个凸多边形如下图: 则相交部分的面积为5.233. 输入输出格式 输入格式: 第一行有一个整数n,表示凸多边形的个数, ...
- diskcache
DiskCache: Disk Backed Cache DiskCache is an Apache2 licensed disk and file backed cache library, wr ...
- 自动交互安装服务应用,以redis为例
#!/bin/bash#新建preinstall.sh文件,该文件完成安装前的准备 yum install gcc gcc-* wget expect -y #expect是因为后面我们用到,安装后可 ...
- centos7和linux防火墙配置入门
linux部分 iptables -L 列出当前防火墙策略 iptables -F 清空防火墙策略 iptables -P INPUT DROP 默认设置丢弃进来的流量包(-p指默认策 ...
- 深入浅出:MySQL的左连接、右连接、内连接
http://blog.csdn.net/wyzxg/article/details/7276979 三种连接的语法 为便于更多的技友快速读懂.理解,我们只讨论2张表对象进行连接操作的情况,大于2张表 ...
- linux 查看tcp数量
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
- 四、springboot(一)入门
1.创建maven工程 2.修改jdk版本为1.8以上 3.项目结构如下 4.添加依赖jar包 <parent> <groupId>org.springframework.bo ...
- PyCharm 设置Python 文件头部模板
1. 菜单栏-> File -> Settings -> Editor -> File and Code Templates ->Python Script 2.配置头文 ...