ES6的学习(三)
扩展运算符
Array的扩展方法
扩展运算符(展开语法)
扩展运算符可以将数组或者对象转为逗号分割的参数序列。
1 2 3 4 5 6
   | let ary = [1,2,3]; console.log(...ary); // 1 2 3 // 逗号被当做方法的参数分隔符 console.log(1,2,3) let letters = ['a','b','c']; console.log(...letters);// a b c
   | 
 
扩展运算符的应用
扩展运算符可用于合并数组
1 2 3 4 5 6 7 8 9
   | // 方法一 let ary1 = [1,2,3]; let ary2 = [3,4,5]; let ary3 = [...ary1,...ary2]; console.log(ary3); // [1,2,3,4,5,6]
  //方法二  ary1.push(...ary2); console.log(ary1);
   | 
 
扩展运算符可以将类数组(伪数组)或者可遍历对象转换为真正的数组
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
   | <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> 	<title>test</title> </head> <body> 	<div>1</div> 	<div>2</div> 	<div>3</div> 	<div>1</div> 	<div>2</div> 	<div>3</div> 	<div>1</div> 	<div>2</div> 	<div>3</div> 	<script type="text/javascript"> 	let oDivs = document.getElementsByTagName('div'); 	console.log(oDivs); 	let ary = [...oDivs]; 	//ary.push('a'); 	console.log(ary); 	let aryFrom = Array.from(oDivs); 	console.log(aryFrom); 	</script> </body> </html>
   | 
 
Array的扩展方法
构造函数方法:Array.from()
- 将类数组或可遍历对象转换为真正的数组
 
- 接受第二个参数,作用类似于数组的map方法,用来对每个元素进行处理,将处理后的值放入返回的数组。
 
1 2 3 4 5 6 7 8 9 10
   | let arrayLike = {     '0' : '1',     '1' : '2',     '2' : '3',     length:3  }; var ary =  Array.from(arrayLike,item => item * 2) console.log(ary);// [2,4,6] let aryFrom  =  Array.from(arrayLike);  console.log(aryFrom); // [1,2,3]
  | 
 
实例方法:find()
用于找出第一个符合条件的数组成员,如果没有找到则返回undefined
1 2 3 4 5 6 7 8 9
   | let ary = [{     id: 1,     name: 'zhagsan' },{     id: '2',     name: 'lisi' }]; let target = ary.find((item,index) => item.id ==2); console.log(target)
  | 
 
实例方法:findIndex()
 用于找出第一个符合条件的数组成员的位置,如果没有找到则返回-1
 1 2 3
   | let ary = [1,5,10,15]; let index = ary.findIndex((value,index) => value > 9); console.log(index);// 2
   | 
 
实例方法:includes()
表示某个数组是否包含给定的值 ,返回布尔值。
1 2 3 4 5
   | let array1 = [1,2,3] let index1 = array1.includes(2) //true let index2 = [1,2,3].includes(4) //false console.log(index1); console.log(index2);
   | 
 
String的扩展方法
实例方法:startsWith()和endsWith()
1 2 3 4
   | let str = 'Hello world!'; console.log(str.startsWith('Hello')); //true console.log(str.startsWith('hello')) //fales,该方法会区分大小写 console.log(str.endsWith('!')) //true
   | 
 
实例方法:repeat()
repeat()方法表示将元字符串重复n次,返回一个新的字符串
1 2 3 4
   | let str1 = 'x'.repeat(3);  // 'xxx' console.log(str1); let str2 = 'hello'.repeat(2) // 'hellohello' console.log(str2);
   | 
 
Set 数据结构
ES6提供了新的数据结构Set。它类似于数组,但是成员的值都是惟一的,没有重复的值。
Set本身是一个构造函数,用来生成Set数据结构。
Set函数可以接受一个数组作为参数,用来初始化。
1
   | const set = new Set([1,2,3,4,5]);
   | 
 
示例:
1 2 3 4 5 6 7 8 9 10
   | const s1 = new Set(); console.log(s1.size);
  const s2 = new Set(['a','b']); console.log(s2.size);
  const s3 = new Set(['a','a','b','b']); console.log(s3.size); const ary = [...s3]; // 使用扩展运算符将set数据结构转换为数组 console.log(ary)
   | 
 
Set数据结构的实例方法
- add(value):添加某个值,返回Set结构本身
 
- deleate(value):删除某个值,返回一个布尔值,表示删除是否成功
 
- has(value): 返回一个布尔值,表示该值是否为Set的成员
 
- clear():清除所有成员,没有返回值
 
1 2 3 4 5 6 7 8 9 10 11
   | const s = new Set(); s.add(1).add(2).add(3);// 向Set结构中添加值 console.log(s);
  s.delete(2); // 删除set结构中的2值 console.log(s);
  console.log(s.has(1)); // 表示set结构中是否有1这个值 返回布尔值
  s.clear(); //清除set结构中的所有值 console.log(s);
   | 
 
Set的遍历
Set结构的实例与数组一样,也拥有forEach()方法,用于对每个成员执行某种操作,没有返回值。
1
   | s.forEach(value => console.log(value))
   | 
 
示例:
1 2 3 4
   | const s = new Set(['a','b','c']); s.forEach(value =>{     console.log(value) })
   | 
 
