ES6 数组,函数,迭代器

数组

数组中的方法

1. Array.of() 将参数中所有值作为元素形成数组。
在这里插入图片描述
数组中的参数可以是不同类型的,当参数为空时,返回空数组。

2. Array.from() 将类数组对象或可迭代对象转化为数组。
在这里插入图片描述
在这里插入图片描述
3. find() 查找数组中符合条件的元素,若有多个符合条件的元素,则返回第一个元素,找不到返回undefined。

	let arr = Array.of(1, 2, 3, 4);
	console.log(arr.find(item => item > 2)); // 3
	// 数组空位处理为 undefined
	console.log([, 1].find(n => true)); // undefined

value:每一次迭代查找的数组元素。
index:每一次迭代查找的数组元素索引。
arr:被查找的数组。
4. findIndex() 查找数组中符合条件的元素索引,若有多个符合条件的元素,则返回第一个元素索引,如果数组中的参数为空,将返回undefined(未定义)

	let arr = Array.of(1, 2, 1, 3);
	// 参数1:回调函数
	// 参数2(可选):指定回调函数中的 this 值
	console.log(arr.findIndex(item => item = 1)); // 0
	 
	// 数组空位处理为 undefined
	console.log([, 1].findIndex(n => true)); //0

find() , findIndex() 方法的参数:

  1. arrayLike 想要转换的类数组对象或可迭代对象。
  2. mapFn map 函数,用于对每个元素进行处理,放入数组的是处理后的元素。
  3. thisArg 用于指定 map 函数执行时的 this 对象。

5. fill(value, start, end) 将一定范围索引的数组元素内容填充为单个指定的值。
在这里插入图片描述

该方法的参数:

  • value:想要替换的内容。
  • start:开始位置(数组的下标),可以省略。
  • end:替换结束位置(数组的下标),如果省略不写就默认为数组结束。

6. copyWithin() 将一定范围索引的数组元素修改为此数组另一指定范围索引的元素。
在这里插入图片描述
该方法的参数:

  • 参数1:被修改的起始索引

  • 参数2:被用来覆盖的数据的起始索引

  • 参数3(可选):被用来覆盖的数据的结束索引,默认为数组末尾

7. entries() 用于遍历键值对。
在这里插入图片描述

8. includes() 方法用来判断一个数组是否包含一个指定的值,如果是返回 true,否则false。
在这里插入图片描述

9. flat() 对数组的维数转换。
在这里插入图片描述
当参数为Infinity时,不管嵌套了多少层,都将转换为一层。
10. flatMap() 先对数组中每个元素进行了的处理,再对数组执行 flat() 方法。

console.log([1, 2, 3].flatMap(n => [n * 2])); // [2, 4, 6]

参数1:遍历函数,该遍历函数可接受3个参数:当前元素、当前元素索引、原数组
参数2:指定遍历函数中 this 的指向

函数

1. 函数的基本用法
在这里插入图片描述

注意:

  1. 使用函数默认参数时,不允许有同名参数
  2. 只有在未传递参数,或者参数为 undefined 时,才会使用默认参数,null 值被认为是有效的值传递。
  3. 函数参数默认值存在暂时性死区,在函数参数默认值表达式中,还未初始化赋值的参数值无法作为其他参数的默认值。

2. 不定参数(…)

	function a(...values){
	    console.log(values.length);
	}
	a(1,2);      //2
	a(1,2,3,4);  //4

不定参数用来表示不确定参数个数,指定多个各自独立的参数,通过整合后的数组来访问,最多只能声明一个,而且必须放在参数末尾。

3. 箭头函数
基本用法:

参数 => 函数体
var f = v => v;//等价于var f = function(a){return a;}f(1); //1

注意:

  1. 当箭头函数没有参数或者有多个参数,要用 () 括起来。
  2. 当箭头函数函数体有多行语句,用 {} 包裹起来,表示代码块,当只有一行语句,并且需要返回结果时,可以省略 {} , 结果会自动返回。
  3. 当箭头函数要返回对象的时候,为了区分于代码块,要用 () 将对象包裹起来。
  4. 没有 this、super、arguments 和 new.target 绑定。
  5. 箭头函数体中的 this 对象,是定义函数时的对象,而不是使用函数时的对象。
  6. 不可以作为构造函数,也就是不能使用 new 命令,否则会报错。
  7. 当定义函数的方法中包含this时,不适合使用。

迭代器

1. Iterator的作用

  • 为各种数据结构,提供一个统一的、简便的访问接口
  • 使得数据结构的成员能够按某种次序排列
  • ES6 创造了一种新的遍历命令for…of循环,Iterator 接口主要供for…of消费。

2. 迭代过程

  • 通过 Symbol.iterator 创建一个迭代器,指向当前数据结构的起始位置

  • 随后通过 next 方法进行向下迭代指向下一个位置, next 方法会返回当前位

  • 置的对象,对象包含了 value 和 done 两个属性, value 是当前属性的值, done 用于判断是否遍历结束

  • 当 done 为 true 时则遍历结束

示例:

const items = ["zero", "one", "two"];
const it = items[Symbol.iterator]();

it.next();
>{value: "zero", done: false}
it.next();
>{value: "one", done: false}
it.next();
>{value: "two", done: false}
it.next();
>{value: undefined, done: true}

3. 迭代的数据结构

  • String,Array,Map,Set,TypedArray是所有内置的可迭代对象,这些原型对象都有一个[Symbol.iterator]方法。

注意:

  • 普通对象时不可迭代,因为普通对象是由 object 创建的,不可迭代。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值