JS中数组与对象的遍历方法实例小结
一、数组的遍历:
首先定义一个数组
|
1
|
arr=['snow','bran','king','nightking']; |
1、for循环,需要知道数组的长度;
2、foreach,没有返回值,可以不知道数组长度;
|
1
2
3
4
|
arr.forEach(function(ele,index){console.log(index);console.log(ele)}) |
3、map函数,遍历数组每个元素,并回调操作,需要返回值,返回值组成新数组,原数组不变;
|
1
2
3
4
|
var newarr=arr.map(function(i){ return "hello "+i});console.log(newarr) |
4、filter函数:过滤通过条件的元素组成一个新数组,原数组不变;
|
1
2
3
4
|
var newarr=arr.filter(function(i){ return i == "bran"});console.log(newarr) |
5、some函数,遍历数组中是否有符合条件的函数,返回布尔值;
|
1
2
3
4
|
var yy=arr.some(function(i){ return i.length>4});console.log(yy) //true |
6、every函数,遍历数组是否每个元素都符合条件,返回布尔值;
|
1
2
3
4
|
var xx=arr.every(function(i){ return i.length>4});console.log(xx) //false |
7、reduce函数,为数组中的每一个元素依次执行回调函数
语法:
|
1
|
arr.reduce(callback, initialValue) |
|
1
2
3
|
[0,1,2,3,4].reduce(function(previousValue, currentValue, index, array){ return previousValue + currentValue;}); |
callback:执行数组中每个值的函数,包括四个参数;
- previousValue:上一次调用回调返回的值,或者是提供的初始值(initialValue);
- currentValue:当前被处理的值;
- index:当前元素在数组中的索引;
- array:调用reduce的数组;
- initialValue:作为第一次调用callback的第一个参数;
例如:
|
1
2
3
4
5
6
7
8
|
var total = [0, 1, 2, 3].reduce(function(a, b) { return a + b;});// total == 6var flattened = [[0, 1], [2, 3], [4, 5]].reduce(function(a, b) { return a.concat(b);});// flattened is [0, 1, 2, 3, 4, 5] |
要提供initialValue的话:
|
1
2
3
4
|
var total = [0, 1, 2, 3].reduce(function(a, b) { return a + b;},4);console.log(total); //10 |
二、对象的遍历
|
1
2
3
4
|
var obj={snow:1,bran:2,king:3,nightking:4};for(let i in obj){ console.log(i+','+obj[i])} |
in也可以用来遍历数组,不过i对应于数组的key值:
|
1
2
3
|
for(let i in arr){ console.log(i+','+arr[i])} |
JS数组遍历:
1,普通for循环,经常用的数组遍历
var arr = [1,2,0,3,9];
for ( var i = 0; i <arr.length; i++){
console.log(arr[i]);
}
2,优化版for循环:使用变量,将长度缓存起来,避免重复获取长度,数组很大时优化效果明显
for(var j = 0,len = arr.length; j < len; j++){
console.log(arr[j]);
}
3,forEach,ES5推出的,数组自带的循环,主要功能是遍历数组,实际性能比for还弱
arr.forEach(function(value,i){
console.log('forEach遍历:'+i+'--'+value);
})
forEach这种方法也有一个小缺陷:你不能使用break语句中断循环,也不能使用return语句返回到外层函数。
4,map遍历,map即是 “映射”的意思 用法与 forEach 相似
arr.map(function(value,index){
console.log('map遍历:'+index+'--'+value);
});
map遍历支持使用return语句,支持return返回值
var temp=arr.map(function(val,index){
console.log(val);
return val*val
})
console.log(temp);
forEach、map都是ECMA5新增数组的方法,所以ie9以下的浏览器还不支持
5,for-of遍历 是ES6新增功能
for( let i of arr){
console.log(i);
}
- for-of这个方法避开了for-in循环的所有缺陷
- 与forEach()不同的是,它可以正确响应break、continue和return语句
for-of循环不仅支持数组,还支持大多数类数组对象,例如DOM NodeList对象。
for-of循环也支持字符串遍历
JS对象遍历:
1,for-in遍历
for-in是为遍历对象而设计的,不适用于遍历数组。
遍历数组的缺点:数组的下标index值是数字,for-in遍历的index值"0","1","2"等是字符串
for (var index in arr){
console.log(arr[index]);
console.log(index);
}
除了for in循环,还可以通过Object.keys(obj).length获取。
- var obj = {
- "c1":1,
- "c2":2
- };
- var arr = Object.keys(obj);
- var len = arr.length;
console.log(len);//结果为2
JS中数组与对象的遍历方法实例小结的更多相关文章
- JavaScript中,数组和对象的遍历方法总结
循环遍历是写程序很频繁的操作,JavaScript 提供了很多方法来实现. 这篇文章将分别总结数组和对象的遍历方法,新手可以通过本文串联起学过的知识. 数组遍历 方法一:for 循环 for 循环是使 ...
- js中数组去重的几种方法
js中数组去重的几种方法 1.遍历数组,一一比较,比较到相同的就删除后面的 function unique(arr){ ...
- JS数组与对象的遍历方法大全
本文简单解析各种数组和对象属性的遍历方法: 原生for循环.for-in及forEach ES6 for-of方法遍历类数组集合 Object.key()返回键名的集合 jQuery的$.each() ...
- js中数组Array对象的方法sort()的应用
一. sort()方法的介绍 //给一组数据排序 var arrNum = [12,1,9,23,56,100,88,66]; console.log("排序前的数组:"+arrN ...
- js中数组的循环与遍历forEach,map
对于前端的循环遍历我们知道有 针对js数组的forEach().map().filter().reduce()方法 针对js对象的for/in语句(for/in也能遍历数组,但不推荐) 针对jq数组/ ...
- js中数组和对象的合并
1 数组合并 1.1 concat 方法 1 2 3 4 var a=[1,2,3],b=[4,5,6]; var c=a.concat(b); console.log(c);// 1,2,3,4,5 ...
- JS中数组实现(倒序遍历数组,数组连接字符串)
// =================== 求最大值===================================== <script> var arr = [10,35,765 ...
- js 中数组或者对象的深拷贝和浅拷贝
浅拷贝 : 就是两个js 对象指向同一块内存地址,所以当obj1 ,obj2指向obj3的时候,一旦其中一个改变,其他的便会改变! 深拷贝:就是重新复制一块内存,这样就不会互相影响. 有些时候我们定义 ...
- Js中找任意对象的原型方法及改造原型
Java中有运行时类型识别,js可以很方便的模仿这个特性,因为所有js对象都有一个属性constructor(构造器),表示这个对象的构造方法,原型与构造方法同名,所以可以通过这儿知道任意对象的原型名 ...
随机推荐
- 【SR汇总】基于深度学习方法
1.SRCNN.FSRCNN (Learning a Deep Convolutional Network for Image Super-Resolution, ECCV2014) (Acceler ...
- YII框架中可以使用foreach遍历对象以及可以使用数组形式直接访问对象的原因
YII框架中可以使用foreach遍历对象以及可以使用数组形式直接访问对象的原因在YII框架的使用过程中,我们可以使用foreach直接遍历findAll等方法返回的对象的属性为什么呢?其实这与CMo ...
- Spring Cloud(1):概览
什么是微服务? 小型的,简单的和解耦的服务 = 可伸缩的,有弹性的和灵活的应用程序. 什么是云? 基础设施即服务(Infrastructure as a Service, Iaas):云提供商只提供基 ...
- Protel99SE推荐使用英文版
Protel99SE的汉化版功能并不全,最好还是用英文原版,功能是最齐全的.用英文版的软件其实也不难,有限的几个词,习惯就好了.
- 禁止crontab -r清空定时任务列表误操作
关于crontab 1.附件cron.sh放/usr/bin目录下面 2.在/etc/bashrc文件末尾添加 alias crontab='/usr/bin/cron.sh' 或者在当前root用户 ...
- 爬虫实现51job谁看过我的简历多条记录功能
默认情况下51job只能看到最近一条记录,查看更多记录需要付费. 本文利用爬虫定时抓取记录,并追加写入到文本的方式获取完整的记录信息. import requests from bs4 import ...
- highway network及mnist数据集测试
先说结论:没经过仔细调参,打不开论文所说代码链接(fq也没打开),结果和普通卷积网络比较没有优势.反倒是BN对网络起着非常重要的作用,达到了99.17%的测试精度(训练轮数还没到过拟合). 论文为&l ...
- 【计算机视觉】UCLA开源图像检测器
UCLA (加州大学洛杉矶分校)发布了一个强大的图像检测软件的源码 ,该软件可以非常高速的检测每个图像的细节,例如可用于检测指纹和虹膜,或者用于自动驾驶.通过识别物体的边界进行提取.首先确定一个物体的 ...
- hdoj4812 D Tree(点分治)
题目链接:https://vjudge.net/problem/HDU-4812 题意:给定一颗带点权的树,求是否存在一条路经的上点的权值积取模后等于k,如果存在多组点对,输出字典序最小的. 思路: ...
- PTA(Advanced Level)1083.List Grades
Given a list of N student records with name, ID and grade. You are supposed to sort the records with ...