JavaScript中常用的遍历函数

  • 一、遍历数组
    • 1、for循环
    • 2、forEach循环
    • 3、map函数
    • 4、filter函数
    • 5. some函数
    • 6. every函数
  • 二、遍历对象
    • 1. 常用方法 in
    • 2. Object.keys(obj)和 Object.values(obj)
    • 3. 使用Object.getOwnPropertyNames(obj)

一、遍历数组

1、for循环

  • 需要知道数组的长度,才能遍历
let arr =['2','test',true,'HelloWorld'];
for (let i = 0; i < arr.length; i++) {console.log(arr[i]);
}

2、forEach循环

  • 循环数组中每一个元素并采取操作, 没有返回值, 可以不用知道数组长度
let arr =['2','小明',true,'HelloWorld'];
arr.forEach((i,index)=>{i='hi,'+i;console.log(i);
})

3、map函数

  • 遍历数组每个元素,并回调操作,需要返回值,返回值组成新的数组,原数组不变
let arr =['2','小明',true,'HelloWorld'];
var newstate=arr.map(function(index) {index="map的"+index;console.log(index)return index;
})
console.log("newstate", newstate);

4、filter函数

  • 过滤通过条件的元素组成一个新数组, 原数组不变
let arr =['2',3,'小明',true,'HelloWorld'];
var newstate=arr.filter(function(index) {return typeof index==='number';
})
console.log(arr,newstate)

5. some函数

  • 遍历数组中是否有符合条件的元素,返回Boolean值
let arr =['2',3,'小明',true,'HelloWorld'];
var newstate=arr.some(function(index) {return typeof index==='number';
})console.log(arr,newstate);

6. every函数

  • 遍历数组中是否每个元素都符合条件, 返回Boolean值
let arr =['2',3,'小明',true,'HelloWorld'];
var newstate=arr.every(function(index) {return typeof index==='number';
})
console.log(arr,newstate);


言而简之:
1、map速度比foreach快
2、map():返回一个新的Array,不对原数组产生影响,每个元素为调用func的结果。
3、foreach不会产生新数组,没有返回值,只是针对每个元素调用func
3、map因为返回数组所以可以链式操作,foreach不能
4、map()要比.forEach()执行速度更快。
5、filter():返回一个符合func条件的元素数组
6、some():返回一个boolean,判断是否有元素是否符合func条件
7、every():返回一个boolean,判断每个元素是否符合func条件

二、遍历对象

1. 常用方法 in

let obj ={a:'2',b:3,c:true};
for (var i in obj) {console.log(obj[i],i)
}
console.log(obj);


in 不仅可以用来 遍历对象,还可以用来遍历数组, 不过 i 对应与数组的 key值

2. Object.keys(obj)和 Object.values(obj)

  • 参数:

    • obj:要返回其枚举自身属性的对象
  • 返回值:
    • 一个表示给定对象的所有可枚举属性的字符串数组。
const obj = {id:1,name:'zhangsan',age:18
}console.log(Object.keys(obj))console.log(Object.values(obj))

3. 使用Object.getOwnPropertyNames(obj)

返回一个数组,包含对象自身的所有属性(包含不可枚举属性)
遍历可以获取key和value

const obj = {id:1,name:'zhangsan',age:18
}
Object.getOwnPropertyNames(obj).forEach(function(key){console.log(key+ '---'+obj[key])
})
  • 还有其他共六种:

    • for … in 循环遍历对象自身的和继承的可枚举属性(不含Symbol属性).
    • Object.keys(obj),返回一个数组,包括对象自身的(不含继承的)所有可枚举属性(不含Symbol属性).
    • Object.getOwnPropertyNames(obj),返回一个数组,包含对象自身的所有属性(不含Symbol属性,但是包括不可枚举属性).
    • Object.getOwnPropertySymbols(obj),返回一个数组,包含对象自身的所有Symbol属性.
    • Reflect.ownKeys(obj),返回一个数组,包含对象自身的所有属性,不管属性名是Symbol或字符串,也不管是否可枚举.
    • Reflect.enumerate(obj),返回一个Iterator对象,遍历对象自身的和继承的所有可枚举属性(不含Symbol属性),与for … in 循环相同.

JavaScript——遍历函数相关推荐

  1. 细说JavaScript异步函数发展历程

    2019独角兽企业重金招聘Python工程师标准>>> < The Evolution of Asynchronous JavaScript >外文梳理了JavaScri ...

  2. jquery遍历多个li_jQuery中10个非常有用的遍历函数

    使用jQuery,可以 很容易的选择HTML元素.但有些时候,在HTML结构较为复杂时,提炼我们选择的元素就是一件麻烦的事情.在这篇教程中,我们将探讨十种方 法去精炼和扩展我们将要操作的集合. HTM ...

  3. 参数 中_理解JavaScript中函数的参数

    1,arguments JavaScript的函数的参数(arguments)在函数体的内部表现为一个类似数组的对象.就是它拥有数组的方法,却不是Array的实例. 例1 我们直接打印出argumen ...

  4. jQuery操作Dom元素、jQuery遍历、JavaScript遍历

    目录 jQuery操作Dom元素 jQuery遍历几种方式 JavaScript遍历 jQuery操作Dom元素 jQuery的主要用法为"选择某个dom元素,再对其进行某种操作" ...

  5. JavaScript中函数里的arguments属性

    <!DOCTYPE html> <html lang="en">     <head>         <meta charset=&qu ...

  6. 实习期间总结遇到的Javascript常用函数

    Javascript常用函数 Array函数 forEach() 遍历数组 ​ 数组:arr ​ arr.forEach(回调函数,this) (this可选) ​ 遍历数组,执行回调函数 push( ...

  7. javascript 遍历对象

    javascript 遍历对象 <!DOCTYPE html> <html lang="en"><head><meta charset=& ...

  8. javascript 回调函数

    javascript 回调函数 回调函数 作为参数传递的函数 示例代码 let x = function () {console.log("执行回调函数") }let y = fu ...

  9. [译] ES6+ 中的 JavaScript 工厂函数(第八部分)

    本文讲的是[译] ES6+ 中的 JavaScript 工厂函数(第八部分), 原文地址:JavaScript Factory Functions with ES6+ 原文作者:Eric Elliot ...

最新文章

  1. Java Day02-1
  2. Facebook:易于解释的神经元可能会阻碍深度神经网络的学习
  3. substring、substr以及slice、splice用法和区别
  4. 《大型网站技术架构》读书笔记之八:固若金汤之网站的安全性架构
  5. 四级单词pdf_2016年12月大学英语四级真题及答案解析(完整三套可打印)
  6. 计算机屏幕亮度调到多少合适,电脑屏幕的亮度和对比度调到多少比较合适,对眼睛伤害最小?有哪位高手了解?...
  7. 工作闲了觉得无聊,忙了觉得累......
  8. 【今日CS 视觉论文速览】10 Dec 2018
  9. 做开源 18 年,他想把中国开源带向世界 | 人物志
  10. WampServer中MySQL中文乱码解决
  11. 阶段1 语言基础+高级_1-3-Java语言高级_07-网络编程_第1节 网络通信概述_4_IP地址...
  12. 如何下载MySQL的驱动包
  13. Clover Configurator 5.16.0.0 黑苹果引导四叶草配置工具
  14. SSM框架原理及使用方法
  15. HDOJ试水心酸总结
  16. 2019华为校园大使面试经验
  17. 计算机无法启动怎么重装系统,电脑无法启动系统怎么重装
  18. jupyter 安装问题 No such notebook dir
  19. 使用html2canvas和jspdf把网页保存pdf并下载
  20. glue logic-胶合逻辑

热门文章

  1. vue实现波纹效果_简单的Vue.js插件可实现自定义波纹效果
  2. 《迷人的8051单片机》----第2章 神秘的半导体 2.1 二极管
  3. ping命令和traceroute命令
  4. 程序退出代码0xC0000005,你的程序崩溃了吗?
  5. 计算机培训参加考试可以获得计算机证书有哪些
  6. android省电模式 原理,Android省电模式侦听器?
  7. 从图灵原创谈起,带你走进国产技术书的时代
  8. layui table表单提示数据接口请求异常:parsererror
  9. 开发中的WebApp框架Demo
  10. 登录秒领2个月PPTV会员秒到 无需复杂步骤