Array es6/7相关知识的记录

       前言:一般比较少写前言,不知道为啥,今天想写一次,今天特想写点博客,但是又不知道从何写起,想了想觉得可以把一些平时经常用的东西归纳总结一下,想到前几天看到的Array的相关东西,觉得Array拓展出来的方法和属性越来越广了,es6/7的流行,越来越多的属性拓展和语法糖可以简化我们的代码,增加我们代码的可阅读性和可拓展新。如果有任何批量欢迎指出来,我会立刻修复和拓充。
       Array是我们程序员日常开发者经常用到的一个对象类型,他本是就提供了相当多的属性,es6/7也对Array进行了不少拓展,今天我对这些属性做一个小的归纳,以便您以及自己今后的查看。主要针对es6/7里的属性

       1) map: Array的map方法,这个方法是对数组进行遍历,需要return操作,并返回一个新的数组。原数组不变。

const test = [6, 4, 3, 7, 5, 8, 1, 9, 2];
let data = [];
data = test.map(v => v * 2); // [12, 8, 6, 14, 10, 16, 2, 18, 4]

       2) forEach: Array的forEach方法,这个方法是对数组进行遍历,不需要return操作。

const test = [6, 4, 3, 7, 5, 8, 1, 9, 2];
let data = [];
test.forEach(v => {
    data.push(v * 2);
});
data // [12, 8, 6, 14, 10, 16, 2, 18, 4]

       3) filter: Array的filter方法,对数组进行遍历,需要return一个Boolean,从数组中筛选我们需要的数,并返回数组。
 

const test = [6, 4, 3, 7, 5, 8, 1, 9, 2];
let data = [];
data = test.filter(v => v > 5);  //  [6, 7, 8, 9]

        4) some: Array的filter方法,对数组进行遍历,判断元素是否有符合条件的,如果有则返回true,如果没有则返回false
 

const test = [6, 4, 3, 7, 5, 8, 1, 9, 2];
let data = [];
test.some(v => v > 5);    // true

         5) find&findIndex: Array的find和findIndex方法,这两个方法是找到符合条件的第一个元素,find是直接返回元素,findIndex是返回元素的index
 

const test = [6, 4, 3, 7, 5, 8, 1, 9, 2];
let data = [];
test.find(v => v > 5);   // 6
test.findIndex(v => v > 5);  // 0

          6) reduce&reduceRight: Array的reduce和reduceRight方法,这两个方法可以理解成原理一样,只是reducer是从index 0--length-1,而reduerRight是从length-1  -- 0。

const test = ['a', 'b', 'c'];
test.reduce((total, c) => total + c, 'd'); // 'abcd'
test.reduceRight((pre, c) => pre + c, 'd');  // 'dcba'

          7) flat: Array 的flat方法是将多维数组降维,参数是降维的次数默认是1。
 

const test = [[1,2,3,['cc']]];
test.flat(); // [1, 2, 3, ['cc']]
test.flat(2); // [1, 2, 3, 'cc']

如果不知道这个数组的维度,这个flat方法还提供了一个Infinity参数,这个参数会将数组降维,直至数组变成一维数组为止。
这让我想到一个比较经典的面试题,将一个数组变成一位数组,并去重。
 

const test = [[1, 2, 3, ['cc', 2, 5], 5]];
let data = [];
data = Array.from(new Set(test.flat(Infinity)));     // [1, 2, 3, "cc", 5]

       今天的分享就到这儿了,这里只是记录了一些平时在代码中经常会用到的一些数组方法,如果有错误的地方或者可以补充的地方希望大家能不吝赐教,我会及时跟正和补充。谢谢大家。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值