ES6-数组扩展方法

271 阅读2分钟

1.扩展运算符(...)

将转换为数组,或展开数组 用法:...arr

例子:

1.展开数组

 let arr=["apple","banana","orange"]
 let arr="abc"
console.log(...arr)

2.合并数组

 let a = [1, 2, 3];
 let b = [4, 5, 6];
 a.push(...b);

3.数组查找最大值

 let a = [1, 2, 3];
 let b = Math.max(...a);

4.复制数组

1.普通复制

let a1=[1,2,3];
let a2=a1;
a2.push(4);
a2并不是a1的克隆,而是指向同一份数据的另一个指针。修改a2,会直接导致a1的变化

2.es5复制(a2改变不会导致a1改变)

  let a1=[1,2,3];
  let a2=a1.concat();
  a2.push(4);
  

3.es6复制(a2改变不会导致a1改变)

  let a1=[1,2,3];
  let a2=[...a1];
  a2.push(4);
 
  

2.Array.from()

将类数组转为真正的数组

类数组(有length就可以),arguments,可遍历(iterable)的对象(包括ES6新增的数据结构Set和Map)

用法:Array.from(a)
例子: 1.字符串转数组

 let a="abd";
 let b=Array.from(a);
 b//["a", "b", "d"]

2.对象转数组(必须加length)

 let arrayLike1 = {
    "0": "lucy",
    "1": "12",
    "2": "女",
    "3": "apple",
    length: 3
  };
 let b = Array.from(arrayLike1);
 

3.from第二个参数

 let arrayLike1 = ("123");
 let b = Array.from(arrayLike1,item=>{
    return item*2
 });

3.Array.of()

用于将一组值,转换为数组 返回参数值组成的数组

用法:Array.of(arr)

例子:

1.转数组

 let b = Array.of(123);
 let b = Array.of(1,3);
 
作用:弥补数组构造函数Array()的不足。
参数个数的不同,Array()行为有差异

 Array方法没有参数、一个参数、三个参数时,返回结果不一 样。

 {
 没有参数: Array()  //[]
 一个参数:Array(3)  //[ , , ,]
 二个参数:Array(3,2)  //[ 3,2]
 二个参数以上:Array(3,2,3)  //[ 3,2,3]
 }

4.find(),findIndex()

find():用于找出第一个符合条件的数,找到返回这个值,没有返回undfine
findIndex():返回下标,没有返回-1

用法:类似map()

例子:

1.查找

  let arrayLike =[1,2,3,6,9,6]
  let b = arrayLike.findIndex(item=>{
    return item>9;
  })

作用:indexOf()不能识别NAN成员

5.fill()

使用给定值,填充一个数组

用法:fill(给定值,填充的起始位置,结束位置)

例子: 1.只有一个参数时:

 ['a', 'b', 'c'].fill(7, 1, 2)
 fill方法,向原数组全部替换为7

2.两个参数时:

 ['a', 'b', 'c'].fill(7, 2)
 fill方法从 2号位开始,向原数组填充 7,一直到末尾

3.三个参数时:

['a', 'b', 'c'].fill(7, 1, 2)
 fill方法从 1 号位开始,向原数组填充 7,到 2 号位之前结束

6.keys(),entries(),values()

用于遍历数组

keys():获取下标

entries():获取键值对

values():获取键值

例子: 1.keys()

  let arrayLike =["apple","res","yellow"]
  let b = arrayLike.keys()
  for(let i of b){
    console.log(i)//0,1,2
  }

2.entries()

 let arrayLike =["apple","res","yellow"]
  let b = arrayLike.entries()
  for(let i of b){
    console.log(i)// [0, "apple"], [1, "res"]
  }

3.values()

 let arrayLike =["apple","res","yellow"]
  let b = arrayLike.values()
  for(let i of b){
    console.log(i)// apple, res
  }