数组的扩展(es6)

179 阅读2分钟

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

将转换为数组,或展开数组

用法:...arr

 例子:
 1.展开数组
 let arr=["apple","banana","orange"]
 let arr="abc"
 console.log(...arr)

2.转为数组

 s(...e){
  console.log(e)  //[1,2,3]
 }
 this.s(1,2,3);
 this.s({name:'lucy',age:"15"});  //[{name:'lucy',age:"15"}]

3.合并数组

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

4.数组查找最大值 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);

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

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

2.Array.from()

将类数组转为真正的数组

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

用法:Array.from(a)

      Array.from(a,s())
      Array.from可以接受第二个参数,作用类似于数组的map方法,用   来对每个元素进行处理,将处理后的值放入返回的数组。

      例子:

     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]
 }

3.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成员

4.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 号位之前结束

5.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
  }