JS数组及对象遍历方法代码汇总


Posted in Javascript onJune 16, 2020

文中的范例基于以下数组和对象。

var arrTmp = ["value1","value2","value3"];
var objTmp = {
  aa:"value1",
  bb:"value2",
  cc:function(){
    console.log("value3")
  }
}

一、JS原生方法

1. javascript遍历的常用的遍历方法是for循环和for-in,ES5的时候加上了forEach方法(IE9以下不支持)。

/****js原生遍历****/
//for循环遍历数组
for(var i=0;i<arrTmp.length;i++){
  console.log(i+": "+arrTmp[i])
}
 
//for-in遍历对象属性,i指代属性名
for(var i in objTmp){
  console.log(i+": "+objTmp[i])
}
 
//forEach遍历数组,三个参数依次是数组元素、索引、数组本身
arrTmp.forEach(function(value,index,array){
  console.log(value+","+index+","+array[index])
})

2. for-in循环是为了遍历对象而设计的,事实上for-in也能用来遍历数组,但定义的索引i是字符串类型的。如果数组具有一个可枚举的方法,也会被for-in遍历到,例如:

//for-in遍历数组
for(var i in arrTmp){
  console.log(i+": "+arrTmp[i])
}
//for-in会遍历到数组的属性
arrTmp.name="myTest";
for(var i in arrTmp){
  console.log(i+":"+arrTmp[i])
}
//输出 0:value1 1:value2 2:value3 name:myTest

3. for循环和for-in能正确响应break、continue和return语句,但forEach不行。

//只会输出value1 value2
for(var i=0;i<arrTmp.length;i++){
  console.log(i+": "+arrTmp[i]);
  if(i==1){
    break;
  }
}
//会输出value1 value2 value3
arrTmp.forEach(function(value){
  console.log(value+);
  if(value==1){
    return;
  }
})

4. ES6中,新增了for-of遍历方法。它被设计用来遍历各种类数组集合,例如DOM NodeList对象、Map和Set对象,甚至字符串也行。官方的说法是:

for...of语句在可迭代对象(包括 Array, Map, Set, String, TypedArray,arguments 对象等等)上创建一个迭代循环,对每个不同属性的属性值,调用一个自定义的有执行语句的迭代挂钩

// for-of遍历数组,不带索引,i即为数组元素
for(let i of arrTmp){
  console.log(i)
}
//输出 "value1" "value2" "value3"
 
// for-of遍历Map对象
let iterable = new Map([["a", 1], ["b", 2], ["c", 3]]);
for (let [key, value] of iterable) {
 console.log(value);
}
//输出 1 2 3
 
// for-of遍历字符串
let iterable = "china中国";
for (let value of iterable) {
 console.log(value);
}
//输出 "c" "h" "i" "n" "a" "中" "国"

5. 上面的方法,注重点都是数组的元素或者对象的属性值。如果单纯的想获取对象的属性名,js有原生的Object.keys()方法(低版本IE不兼容),返回一个由对象的可枚举属性名组成的数组:

/****Object.keys()返回键名数组****/
//数组类型
let arr = ["a", "b", "c"];
console.log(Object.keys(arr));
// (3) ['0', '1', '2']
 
// 类数组对象
let anObj = { 100: 'a', 2: 'b', 7: 'c' };
console.log(Object.keys(anObj));
// (3) ['2', '7', '100']
 
//一般对象
let xyz = {z: "zzz", x: "xxx", y: "yyy"};
console.log(Object.keys(xyz));
// (3) ["z", "x", "y"]

javascript原生遍历方法的建议用法:

  • 用for循环遍历数组
  • 用for-in遍历对象
  • 用for-of遍历类数组对象(ES6)
  • 用Object.keys()获取对象属性名的集合

二、jQuery的$.each

jQuery的遍历方法通常被用来遍历DOM元素,用于数组和对象的是$.each()方法,它接受两个参数,分别指代属性名/数组索引和属性值/数组元素:

/****$.each()遍历对象和数组****/
$.each(arrTmp,function(index,value){
  console.log(index+": "+value)
});
 
$.each(objTmp,function(key,value){
  console.log(key+": "+value)
});

三、underscore的_.each()遍历

underscore.js是一个较流行的插件库,它封住了一些对数组和对象的处理方法。_.each()就用来遍历:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Document</title>
  <script type="text/javascript" src="../lib/underscore.js"></script>
</head>
<body>
<script type="text/javascript">
 
var arrTmp = ["value1", "value2", "value3"];
var objTmp = {
  aa: "value1",
  bb: "value2",
  cc: function () {
    console.log("value3")
  }
};
 
//_.each()接受三个参数,分别指代键值、键名和被遍历的对象本身
_.each(arrTmp,function(value,index,array){
  console.log(index +","+ value +","+ array[index])
})
_.each(objTmp,function(value,key,obj){
  console.log(key +","+ value +","+ obj[key])
})
</script>
</body>
</html>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
由prototype_1.3.1进入javascript殿堂-类的初探
Nov 06 Javascript
效率高的Javscript字符串替换函数的benchmark
Aug 02 Javascript
Dreamweaver jQuery智能提示插件,支持版本提示,支持1.6api
Jul 31 Javascript
jQuery学习笔记 操作jQuery对象 文档处理
Sep 19 Javascript
浅析document.ready和window.onload的区别讲解
Dec 18 Javascript
javascript生成随机颜色示例代码
May 05 Javascript
JavaScript进阶练习及简单实例分析
Jun 03 Javascript
JavaScript实现自动切换图片代码
Oct 11 Javascript
JS对象序列化成json数据和json数据转化为JS对象的代码
Aug 23 Javascript
Vue 2.0双向绑定原理的实现方法
Oct 23 Javascript
vue 父组件通过$refs获取子组件的值和方法详解
Nov 07 Javascript
深入浅析golang zap 日志库使用(含文件切割、分级别存储和全局使用等)
Feb 19 Javascript
浅谈Vue 函数式组件的使用技巧
Jun 16 #Javascript
原生JS实现天气预报
Jun 16 #Javascript
vue实现公告栏文字上下滚动效果的示例代码
Jun 16 #Javascript
原生JS实现无缝轮播图片
Jun 24 #Javascript
如何利用Node.js与JSON搭建简单的动态服务器
Jun 16 #Javascript
js+css实现全屏侧边栏
Jun 16 #Javascript
JavaScript装箱及拆箱boxing及unBoxing用法解析
Jun 15 #Javascript
You might like
论坛头像随机变换代码
2006/10/09 PHP
在Laravel5中正确设置文件权限的方法
2019/05/22 PHP
javascript DOM编程实例(智播客学习)
2009/11/23 Javascript
Jquery+ajax请求data显示在GridView上(asp.net)
2010/08/27 Javascript
JavaScript省市联动实现代码
2014/02/15 Javascript
node.js中的path.resolve方法使用说明
2014/12/08 Javascript
jquery实现侧边弹出的垂直导航
2014/12/09 Javascript
AngularJS入门教程引导程序
2016/08/18 Javascript
Jquery和Js获得元素标签名称的方法总结
2016/10/08 Javascript
AngularJS实现根据变量改变动态加载模板的方法
2016/11/04 Javascript
bootstrap中添加额外的图标实例代码
2017/02/15 Javascript
JavaScript中创建对象的7种模式详解
2017/02/21 Javascript
Vue.js自定义事件的表单输入组件方法
2018/03/08 Javascript
jQuery插件Validation表单验证详解
2018/05/26 jQuery
JavaScript常用数组操作方法,包含ES6方法
2020/05/10 Javascript
解决vue项目nginx部署到非根目录下刷新空白的问题
2018/09/27 Javascript
Vue项目使用localStorage+Vuex保存用户登录信息
2019/05/27 Javascript
vue自定义正在加载动画的例子
2019/11/14 Javascript
JQuery复选框全选效果如何实现
2020/05/08 jQuery
VUE实时监听元素距离顶部高度的操作
2020/07/29 Javascript
基于JQuery和DWR实现异步数据传递
2020/10/16 jQuery
JavaScript实现网页跨年倒计时
2020/12/02 Javascript
vue实现按钮切换图片
2021/01/20 Vue.js
python练习程序批量修改文件名
2014/01/16 Python
python中的内置函数getattr()介绍及示例
2014/07/20 Python
详解Python的Django框架中inclusion_tag的使用
2015/07/21 Python
Python入门_学会创建并调用函数的方法
2017/05/16 Python
python os.rename实例用法详解
2020/12/06 Python
Pat McGrath Labs官网:世界上最有影响力的化妆师推出的彩妆品牌
2018/01/07 全球购物
日本卡普空电视游戏软件公司官方购物网站:e-CAPCOM
2018/07/17 全球购物
一套C#面试题
2013/10/09 面试题
求职导师推荐信范文
2015/03/27 职场文书
销售内勤岗位职责范本
2015/04/13 职场文书
天鹅湖观后感
2015/06/09 职场文书
七年级上册生物的课件
2019/08/07 职场文书
5道关于python基础 while循环练习题
2021/11/27 Python