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则可以直接生成新的数 ...
随机推荐
- webapi core2.1 IdentityServer4.EntityFramework Core进行配置和操作数据
https://identityserver4.readthedocs.io/en/release/quickstarts/8_entity_framework.html 此连接的实践 vscode ...
- hdu4292 Food 最大流
You, a part-time dining service worker in your college’s dining hall, are now confused with a new pr ...
- Math.floor(-8.5)=多少?
Math.floor() 表示向下取整,返回double类型 (floor---地板) Math.ceil() 表示向上取整,返回double类型 (ceil---天花板) Ma ...
- LeetCode - Minimum Area Rectangle
Given a set of points in the xy-plane, determine the minimum area of a rectangle formed from these p ...
- 用Python开发Zeroc Ice应用
Zeroc Ice简介 Zeroc ICE(Internet Communications Engine ,互联网通信引擎)是目前功能比较强大和完善的RPC框架,支持跨平台.跨语言调用.它非常灵活 ...
- inux下C中怎么让才干安全关闭线程
前言: 多线程程序中,特别是频繁申请.释放线程的情况下,就要注意线程的关闭,最好使用线程池. 一,线程退出方式 (1) 运行完毕后隐式退出: (2) 由线程本身显示调用pthr ...
- 自定义简单的模板引擎-JS模板引擎
http://www.cnblogs.com/52fhy/p/5393673.html
- ML(4)——逻辑回归
Logistic Regression虽然名字里带“回归”,但是它实际上是一种分类方法,“逻辑”是Logistic的音译,和真正的逻辑没有任何关系. 模型 线性模型 由于逻辑回归是一种分类方法,所以我 ...
- 利用JSON将Map转换为类对象
Map类型做为一种常见的Java类型,经常在开发过程中使用,笔者最近遇到要将Map对象做为一种通用的参数变量,下传到多个业务类方法中,然后在各个业务类方法中将Map转换为指定类对象的情况.如何将Map ...
- mysql之 事务prepare 与 commit 阶段分析
打开binlog选项后,执行事务提交命令时,就会进入两阶段提交模式.两阶段提交分为prepare阶段和commit两个阶段.流程如下 :这里面涉及到两个重要的参数:innodb_flush_log_a ...