ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

ES6学习笔记 —— 数组

2022-04-26 09:01:44  阅读:167  来源: 互联网

标签:ES6 flat 笔记 item let 数组 Array id


一、数组扩展创建

1. Array.from方法用于将两类对象转为真正的数组:类似数组的对象(array-like object)和可遍历(iterable)的对象(包括ES6新增的数据结构Set和Map),可以接受第二个参数,用来对每个元素进行处理,将处理后的值放入返回的数组。

2. Array.of方法用于将一组值,转换为数组,弥补数组构造函数Array()的不足。

3. Array方法没有参数、一个参数、三个参数时,返回结果都不一样。只有当参数个数不少于2个时,Array()才会返回由参数组成的新数组。参数个数只有一个时,实际上是指定数组的长度

Array.from([1, 2, 3])
等同于
Array.of(1, 2, 3)

 

二、查找

find():用于找出第一个符合条件的数组元素。

findIndex:返回第一个符合条件的数组元素的位置,如果所有元素都不符合条件,则返回 -1 。

let List = [1,2,3,4]

List.find(item=>item>3)  //4
List.findIndex(item=>item>3) //3

let arr = [
      {id:1,name:'AAA'},
      {id:2,name:'BBB'},
      {id:3,name:'CCC'},
      {id:4,name:'DDD'}
] 

arr.find(item=>item.id==1)  //{id:1,name:'AAA'}
arr.findIndex(item=>item.id==1) //0

 

三、填充

fill():将一定范围索引的数组元素内容填充为单个指定的值。

copyWithin():将一定范围索引的数组元素修改为此数组另一指定范围索引的元素。

[1,2,3,4].fill(0,1,2) // [1, 0, 3, 4]

[1, 2, 3, 4, 5].copyWithin(0, 3, 4)  // 将3号位复制到0号位, [4, 2, 3, 4, 5]

 

四、遍历数组

keys() :对键名的遍历

values(): 对键值的遍历

entries(): 对键值对的遍历

    for (let index of ['a', 'b'].keys()) {
      console.log(index);
    }
    // 0
    // 1
for (let elem of ['a', 'b'].values()) { console.log(elem); } // 'a' // 'b'
for (let [index, elem] of ['a', 'b'].entries()) { console.log(index, elem); } // 0 "a" // 1 "b"

 

五、包含

includes():数组是否包含指定值。

注意:与 Set 和 Map 的 has 方法区分;Set 的 has 方法用于查找值;Map 的 has 方法用于查找键名。

  • Map 结构的 has 方法,是用来查找键名的,比如 Map.prototype.has(key) 、 WeakMap.prototype.has(key) 、 Reflect.has(target, propertyKey) 。
  • Set 结构的 has 方法,是用来查找值的,比如 Set.prototype.has(value) 、 WeakSet.prototype.has(value) 。

 

    // 参数1:包含的指定值
    [1, 2, 3].includes(1);    // true
     
    // 参数2:可选,搜索的起始索引,默认为0
    [1, 2, 3].includes(1, 2); // false
     
    // NaN 的包含判断
    [1, NaN, 3].includes(NaN); // true

 

六、嵌套数组转一维数组

flat():方法将子数组的成员取出来,添加在原来的位置,flat() 方法的参数写成一个整数,表示想要拉平的层数,默认为1。

flatMap():方法对原数组的每个成员执行一个函数(相当于执行 Array.prototype.map() ),然后对返回值组成的数组执行 flat() 方法。该方法返回一个新数组,不改变原数组。

 

[1, 2, [3, [4, 5]]].flat()  // [1, 2, 3, [4, 5]]

[1, 2, [3, [4, 5]]].flat(2)  // [1, 2, 3, 4, 5]

[1, [2, [3]]].flat(Infinity)  //不管有多少层嵌套,都要转成一维数组  [1, 2, 3]

[1, 2, , 4, 5].flat()  // 跳过空位  [1, 2, 4, 5]

// 相当于 [[2, 4], [3, 6], [4, 8]].flat()
[2, 3, 4].flatMap((x) => [x, x * 2])  // [2, 4, 3, 6, 4, 8]
 
// 相当于 [[[2]], [[4]], [[6]], [[8]]].flat()
 [1, 2, 3, 4].flatMap(x => [[x * 2]])  // [[2], [4], [6], [8]]

 

七、合并数组

[...[1, 2],...[3, 4]] //[1, 2, 3, 4]

 

八、复制数组

let arr = [1, 2]
let arr1 = [...arr] // [1, 2]
     
// 数组含空位
let arr2 = [1, , 3]
let arr3 = [...arr2] // [1, undefined, 3]

 

标签:ES6,flat,笔记,item,let,数组,Array,id
来源: https://www.cnblogs.com/Intellectualscholar/p/16190746.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有