8. 数组的拓展

目录

  • 数组的拓展

    • 一.扩展运算符
    • 二.数组实例的方法
      • 1. Array.from()
      • 2. Array.of()
      • 3. find()和findIndex()
      • 4. fill()
      • 5. entries(),keys(),values()
      • 6. includes方法
      • 7. flat(),flatMap()
      • 8. copyWithin()
      • 9. 数组的空位
    • 总结

数组的拓展

一.扩展运算符

  1. 含义:扩展运算符是三个点(...),作用是将数组转换为用逗号分隔的参数序列

    console.log(1,...[2,3,4],5);
    
    //等价于
    console.log(1,2,3,4,5);
  2. 用法:
    • 该运算符主要用于函数的调用
    • 扩展运算符与正常的函数参数可以结合使用
    • 扩展运算符后面可以放置表达式
    • 如果扩展运算符是空数组,不产生任何效果
    function func(a,b,c,d,e){}
    //调用
    func(1,...[2,3],4,...[5])
    
    func(1,...(x > 0 ? [2,3,4,5] : [6,7,8,9]))
  3. 扩展运算符的应用
    • 复制数组
    const a1 = [2,3,4];
    
    //如下两种方式都可以实现数组的复制
    const b1 = [...a1];
    const [...b2] = a1;
    • 合并数组
    const a1 = [1,2,3];
    const a2 = [4,5,6];
    
    const b1 = [...a1,...a2];
    • 与解构赋值结合,生成数组
    let [a,...list] = [1,2,3,4,5,6];
    • 如果将扩展运算符用于数组赋值,只能放在最后一位,否则报错
    let [a,...nums,c] = [1,2,3,4,5];     //报错
    • 将字符串转为数组
    [...'hello']     //['h','e','l','l','o']

二.数组实例的方法

1. Array.from()

  1. Array.from用于将两类对象转化为真正的数组

    • 类似数组的对象
    • 可遍历的对象
  2. 任何有length属性的对象, 都可以通过Array.from转换为数组
  3. 如果参数是一个数组,Array.form会返回一个一模一样的新数组
  4. 如果参数是一个字符串,Array.from方法会将字符串拆分为字符数组
  5. Array.from还可以接受第二个参数,类似于数组的map方法,用来对每个元素进行处理,将处理后的值放入返回的数组
    Array.from(arrList,x => x * x);
    //等价于
    Array.from(arrList).map(x => x * x)
    
    Array.from(...[1,2,3],x => x * x);
    //  ----> [1,4,9]

2. Array.of()

  1. 用于将一组值,转换为数组
  2. 如果没有参数,则返回一个空数组
    Array.of();      // []
    Array.of(1); // [1]
    Array.of(1,2,3); //[1,2,3]

3. find()和findIndex()

  1. find方法用来找出数组中一个符合条件的元素,参数是一个回调函数

    [1,2,3,4,5].find(n => n > 1);        // 2
  2. findIndex方法返回第一个符合条件的数组成员的位置,参数是一个回调函数
    [1,2,3,4,5].findIndex(n => n > 0)    //返回0,即第一一个符合条件元素的下标

4. fill()

  1. 用指定的值,填充数组
  2. fill方法还可以拥有第二个和第三个参数,用来指定开始位置和结束位置
    [1,2,3].fill(7);     //[7,7,7]
    [1,2,3,4,5].fill(8,0,3)  //[8,8,8,4,5]

5. entries(),keys(),values()

  1. entries用来遍历键值对
  2. keys用来遍历键名
  3. values用来遍历值
  4. 可用for...of来进行循环遍历
    for(let index of ['a','b'].keys()){
        console.log(index);
    }
    
    for(let ele of ['a','b'].values()){
        console.log(ele);
    }
    
    for(let [index,ele] of ['a','b'].entries()){
        console.log(index,ele);
    }

6. includes方法

  1. 数组的includes方法用来某个数组是否包含给定的值,返回布尔值
  2. 该方法的第二个参数表示搜索的起始位置
    [1,2,3].includes(3);     //true
    [1,2,3].includes(1,1);       //false

7. flat(),flatMap()

  1. flat函数用于将嵌套的数组拉平,变成一维数组

    [1,2,[3,4,5]].flat();        // [1,2,3,4,5]
  2. flat默认只会拉平一层内嵌数组,可通过传参的方式制定拉平的层数,参数默认为1
  3. 不管多少层嵌套,可以通过传入 Infinity关键字作为参数,统一转为一维数组

8. copyWithin()

  1. 数组实例的copyWithin方法,用来在当前数组内部,将指定位置的成员复制到其他位置,然后返回当前数组
  2. 它接受三个参数
    • target:从该位置开始替换数组
    • start:可选,从位置开始读取数组
    • end:可选,到该位置停止读取数组
    [1,2,3,4,5].copyWithin(0,3);     //[4,5,3,4,5]

9. 数组的空位

  1. 数组的空位即数组中仅仅使用逗号分隔开,并没有设值的位置
  2. 由于各个方法对空位的处理不同,所以应该尽量避免出现空位

总结

  1. ES6中,新增了数组的扩展运算符,扩展运算符类似于rest参数,作用是将数组转换为逗号分隔的参数列表
  2. ES6中,新增了数组实例对象的一些方法

原文地址:https://www.cnblogs.com/mapengfei247/p/11116727.html

时间: 2024-11-29 06:35:55

8. 数组的拓展的相关文章

《ES6标准入门》49~68Page 数值的拓展 数组的拓展

1.数值拓展 ES6提供的二进制和八进制表示法分别是二进制: 0B111110111(0b111110111) 八进制: 0O767(0o767) ES6提供了新的Number.isFinite()和Number.isNaN()方法来判断参数是否为无穷或者非数字. 新方法和全局方法的区别在于,新方法不再将参数转换为数值,而直接判断. ES6将parseInt()和parseFloat()方法移植到了Number对象上,用途保持不变. Number.isInteger()方法判断是否为整数. ES

7.数组的拓展

1.Array.from() 2.Array.of() 3.数组实例的copyWithin() 4.数组实例的find()和findIndex() 5.数组实例的fill() 6.数组实例的entries(),keys()和values() 7.数组实例的includes() 8.数组的空位

数组的拓展方法

1. .indexOf(element) / .lastIndexOf(element) 这两个方法用于查找数组内指定元素位置,查找到第一个后返回其索引,没有查找到返回-1,indexOf从头至尾搜索,lastIndexOf反向搜索 var a = [1,2,3,6,2,7,4] console.log(a.indexOf(2)) // 1 正数第一个2 console.log(a.indexOf(8)) //-1 数组中没有那个元素 console.log(a.lastIndexOf(2))

ES6数组的拓展

数组的部分方法: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <p>慕课网</p> <p>妙味课堂</p> <p>爱创课堂</p> <scri

数组对象新增方法Array.from()、Array.of()

1. Array.from() Array.from方法用于将两类对象转为真正的数组:类数组的对象( array-like object )和可遍历( iterable )的对象(包括 ES6 新增的数据结构 Set 和Map ). let arrayLike = { '0': 'a', '1': 'b', '2': 'c', length: 3 }; // ES5 的写法 var arr1 = [].slice.call(arrayLike); // ['a', 'b', 'c'] // ES

动态规划算法之滚动数组的求解(C++)

虽然接触动态规划算法已经有一段时间,给一个01背包问题,能够做到一个表格简单粗暴下去,然后求得结果,但心里总觉得对这个算法理解十分不到位,抱着对算法的热爱,网上很多大牛的算法思维实在让我佩服的五体投地.在此讲一讲动态规划中滚动数组的求解方法,算是对这个知识点做一个记录,也希望有写的不妥的地方,大家能不吝赐教. 首先,我们先看看"滚动数组"的例题,大家可以参考http://www.lintcode.com/en/problem/house-robber/ 题意大概就是说:一个盗贼要去偷盗

java之方法与数组

主要知识点: 什么是方法 方法的格式与属性 方法的特点 一维数组的简介,声明和初始化 数组分配内存空间 二维数组 操作数组的工具类-Arrays 什么是方法 方法是一组为了实现特定功能代码块的集合.方法的主要功能有两个: 结构化代码:将代码按照功能进行组织,是代码结构比较清晰,容易阅读和修改,也就是程序的可维护性强. 减少代码的重复:一个固定的功能,可能在程序中多次使用,在使用的时候需要调用写好的方法,而不用重复书写对应的功能代码. 方法在书写的时候需要注意以下两点: 逻辑严谨:方法实现的一个完

循环一维数组最大子数组

结对人员:张世通 梁世豪 一.题目 返回一维数组中最大子数组的和 输入一个整形数组,数组里有正数也有负数. 数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和. 如果数组A[0]……A[j-1]首尾相邻,允许A[i-1], …… A[n-1], A[0]……A[j-1]之和最大. 同时返回最大子数组的位置. 求所有子数组的和的最大值. 要求时间复杂度为O(n) 二.设计思路 1.在上一次求一维数组最大子数组的问题上,进行拓展,继续使用类似的求和方法 2.通过定义变量start,fin

ES6 随记(3.4.1)-- 函数的拓展(参数默认值,扩展运算符)

上一章请见: 1. ES6 随记(1)-- let 与 const 2. ES6 随记(2)-- 解构赋值 3. ES6 随记(3.1)-- 字符串的拓展 4. ES6 随记(3.2)-- 正则的拓展 & 数值的拓展 5. ES6 随记(3.3)-- 数组的拓展 4. 拓展 e. 函数的拓展 · 参数默认值.此节与结构赋值关系甚大,可去往前文再看一次 再来烧脑的重新打开这个蛋疼的案例, function fn1({x = 0, y = 0} = {}) { console.log(x, y);