1、for in / for of

for in --> index是key值

var array = [1,2,3,4,5];
for(let index in array)
{
console.log(index, array[index]);
};
var obj = {a:1, b:2, c:"qqq"};
for(let index in obj)
{
console.log(index, obj[index]);
};

 for of --> index是value值

for(let index of array){
console.log(index)
}

比较

注:for of 不支持对象,是直接得到值

obj = {a:1, b:"hello", c: 1.2}

for(let index in obj){console.log(index, obj[index]);};
a 1
b hello
c 1.2 for(let index of obj){console.log(index, obj[index]);};
error
for(let index in array){console.log(index, array[index]);};
0 1
1 2
2 3
3 4
4 5 for(let index of array){console.log(index, array[index]);};
1 2
2 3
3 4
4 5
5 undefined

2、forEach

不支持break、return

var array = [1,2,3,4,5];
array.forEach( v => { console.log(v); } );
var array = [1,2,3,4,5];
var num = null;
var result = array.forEach( a =>
{
num += a; return a+1;
});
> console.log(result);
undefined
> console.log(num)
1 15
> console.log(array)
(5) [1, 2, 3, 4, 5]

3、map

映射 return,常用于对象数组获取一个属性等

let a = [1,2,3];
let b = a.map(index => { return index >= 2; });
> console.log(b)
(3) [false, true, true]
> console.log(a)
(3) [1, 2, 3]

4、reduce

arr.reduce(callback, [initValue])

累加

let nums = [1,2,3,4,5];
let res3 = nums.reduce(function(total,nums){
return total+nums;
},4); > console.log(res3);
19 //4+15
let res = [[0,1],[2,3],[4,5]].reduce((a,b)=>{
return a.concat(b);
},[]); > console.log(res);
(6) [0, 1, 2, 3, 4, 5]

目标多个属性同时叠加

// 主要对象
var res = [{a:"a", b:1},{a:"b", b:2},{a:"c", b:3}];
// 辅助
var other = {a:0.1, b:0.2, c:0.3}
// 累加计算 --> 累加(b的值*辅助的值) - 10
var out = res.reduce((m,n)=>{return n.b*other[n.a]+m;}, -10); > console.log(out);
-8.6

求一样的字符数量

var arrString = 'abcdaabc';

arrString.split('').reduce(function(res, cur) {
res[cur] ? res[cur] ++ : res[cur] = 1;
console.log(res[cur]+"||"+cur);
return res;
}, {});
1||a
1||b
1||c
1||d
2||a
3||a
2||b
2||c
{a: 3, b: 2, c: 2, d: 1}

遍历进行操作

[1, 2].reduce(function(res, cur) {
res.push(cur + 1);
return res;
}, [])
(2) [2, 3]

5、filter

过滤,不会改变原数组

arr.filter(callback, [thisArg])  ([thisArg]可选)

const array = [{id:1, name:'a'},{id:2, name:'b'},{id:3, name:'c'}];
let obj2 = array.filter(obj => obj.id > 1);
> console.log(obj2);
(2) [{…}, {…}]
0: {id: 2, name: "b"}
1: {id: 3, name: "c"}
length: 2
__proto__: Array(0)

6、find

找到符合条件的第一个

let a = [1,2,3,4,5];
a.find(n => n < 3);
1
a.find(n => n < 4);
1
a.find(n => n >= 4);
4

7、some

有一个满足则为true

var passed = [2, 5, 8, 1, 4].some(v => v>10);
false
passed = [2, 5, 8, 11, 4].some(v => v>10);
true

8、every

都满足则为true

passed = [2, 5, 8, 11, 4].every(v => v>10);
false
passed = [2, 5, 8, 11, 4].every(v => v>1);
true

9、indexOf / lastindexOf

寻找第一个完全一样的字符出现的位置(正向/反向)
arr.lastIndexOf(searchElement, [fromIndex]);
返回索引或-1

es6 遍历总结的更多相关文章

  1. ES6遍历器 生成器 学习整理

    遍历器[迭代器](Iterator) 就是这样一种机制.它是一种接口,为各种不同的数据结构提供统一的访问机制.任何数据结构只要部署 Iterator 接口,就可以完成遍历操作(即依次处理该数据结构的所 ...

  2. ES6遍历对象方法

    ES6 一共有 5 种方法可以遍历对象的属性. (1)for...in for...in循环遍历对象自身的和继承的可枚举属性(不含 Symbol 属性). let obj = {a:1,b:2,c:3 ...

  3. js es6遍历对象的6种方法(应用中推荐前三种)

        javaScript遍历对象总结 1.for … in 循环遍历对象自身的和继承的可枚举属性(循环遍历对象自身的和继承的可枚举属性(不含Symbol属性).). 2.使用Object.keys ...

  4. es6遍历数组forof

  5. 关于js中的for(var in)遍历属性报错问题

    之前遇到过这个问题,但是没找到问题的所在,将for(var i in  array){} 改成了for(var i ;i<array.length;i++)循环,但是今天又遇到了,mark一下错 ...

  6. es6 和 python 语法比较

    http://www.linchaoqun.com/html/cms/content.jsp?id=1509528630774 Python3笔记:Python与ECMAScript部分语法对比 ht ...

  7. 关于js中遍历总结

    1.for循环 var arr = []; for (var i = 0; i < arr.length; i++) { if (条件1) return; if (条件2) break; if ...

  8. ES6对数组的扩展(简要总结)

    文章目录 数组的扩展(ES6) 1. 扩展运算符 2. Array.from 3. Array.of() 4. copyWithin() 5. find() 和 findIndex() 6. fill ...

  9. 深入理解es6(上)

    一.let和const 1.let与var的区别 不存在变量提升 块级作用域 不允许重复声明 2.const常量 const与let一样,唯一区别在于声明的常量不能被修改 二.解构赋值 es6按照一定 ...

随机推荐

  1. python接口测试-认识GET请求

    前边用工具也实现了接口自动化,但是后来很多的时候维护成本有点高.而且灵活上还是有所欠缺的. 于是,自己开始摸索学习敲码.应该有很多不对的地方或者可以优化的望各位大神勿喷,同时欢迎各位大神评论区发表自己 ...

  2. docker+fastdfs+nginx 实现分布式大文件存储系统以及视频缓存播放

    废话不多说,直接开撸 首先是一些准备工作: 1.关闭防火墙 service iptables stop --- fastdfs虽然在docker部署,但是使用的是主机网络,所以关闭防火墙. 2  下载 ...

  3. java动态代理实现与原理详细分析

    关于Java中的动态代理,我们首先需要了解的是一种常用的设计模式--代理模式,而对于代理,根据创建代理类的时间点,又可以分为静态代理和动态代理. 一.代理模式    代理模式是常用的java设计模式, ...

  4. Python学习——python的常用模块

    模块:用一堆代码实现了某个功能的代码集合,模块是不带 .py 扩展的另外一个 Python 文件的文件名. 一.time & datetime模块 import time import dat ...

  5. docker+ubuntu14.04+cuda7.0

    参考链接: http://tleyden.github.io/blog/2014/10/25/docker-on-aws-gpu-ubuntu-14-dot-04-slash-cuda-6-dot-5 ...

  6. (97)Wangdao.com_第三十天_触摸事件

    触摸事件 只有触摸屏才会引发这一类事件 触摸事件 和 鼠标事件 同时触发,即使这个时候并没有用到鼠标. 这是为了让那些只定义鼠标事件.没有定义触摸事件的代码,在触摸屏的情况下仍然能用. 如果想避免这种 ...

  7. [LeetCode] All Paths From Source to Target 从起点到目标点到所有路径

    Given a directed, acyclic graph of N nodes.  Find all possible paths from node 0 to node N-1, and re ...

  8. Jenkins-权限管理

    一.要对用户进行管理首先下载一个权限管理插件(系统管理>>>插件管理) Role-based Authorization Strategy 系统管理   >>>全局 ...

  9. [ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project triage: Compilation failure [ERROR] No compiler is provided in this environment.

    [ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-c ...

  10. Rabbitmq重启服务器用户丢失解决办法

    参考:https://blog.csdn.net/yiluoAK_47/article/details/78173563?utm_source=blogxgwz2 Rabbitmq创建的用户在服务器重 ...