Javascript Es6方法合集

Javascript Es6方法合集

1.filter

原理

filter()方法会创建一个新数组,原数组的每个元素传入回调函数中,回调函数中有return返回值,若返回值为true,这个元素保存到新数组中;若返回值为false,则该元素不保存到新数组中;原数组不发生改变。

let values=[NaN, 10, 10, 0, 10, 10, 10, 10, 10, 10] 
//过滤掉NaN和0
//1.
let Liet= values.filter((item) => {
   return !isNaN(item)&&item
 });
 //2.
let Liet= values.filter((item) =>!isNaN(item)&&item);
//[10, 10, 10, 10, 10, 10, 10, 10]
//
let Liet= values.filter((item,index,arr) => {
        console.log('values',item,index,arr);
        return !isNaN(item)&&item
 });

2.map

map() 方法返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值。

map() 方法按照原始数组元素顺序依次处理元素。
返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值。

注意: map() 不会对空数组进行检测。

注意: map() 不会改变原始数组。

let ids = this.dynamicTags.map((item) => item.id);
// ["1354306079344857089", "1368812632591613954", "1370252422465757185", "1425622827346993153"]
let numbers = [1, 4, 9];
let roots = numbers.map(Math.sqrt);
//numbers [1, 4, 9]
//roots  [1, 2, 3]
//Math.sqrt(4)---2求平方根
let numbers = [1, 4, 16];
let numbers1 = numbers.map((currentValue, index, array) => {
      console.log("numbers1", currentValue, index, array);
})
//currentValue 数组中正在处理的当前元素
//index 数组中正在处理的当前元素的索引。
//array   map 方法被调用的数组。   [1, 4, 16]
//1   0   [1, 4, 16]
//4   1    [1, 4, 16]
//16  2    [1, 4, 16]
function pow(x) {
    return x * x;
}
var arr = [1, 2, 3];
var results = arr.map(pow); // [1, 4, 9]
console.log(results);

我们不但可以计算简单的上述操作,还可以计算任意复杂的函数,例如,我们可以快速的将一个数字数组转化为字符串数组:

将数组的元素进行类型转换

var arr = [1, 2, 3];
var results = arr.map(String); 
console.log("results",results);// ['1', '2', '3']
console.log(results.map(Number))// [1, 2, 3]

有时候在使用map的时候也会出现误区,例如,把一个字符串数字转化为数字,可能会出现意想不到的结果,大家想想下面这个的值为什么呢?

var a=['1', '2', '3'].map(parseInt);//[1,NaN,NaN],
说明: map会给callback传输三个参数,第一个参数是元素本身(当前元素),第二个参数是元素的索引值(当前元素的索引),第三个是原数组(map 方法被调用的数组),而parseInt可以接受一个参数,也可以接受两个参数,接受一个参数的时候该参数直接为需要转化的字符串;接受两个参数的时候:第一个参数是要转为数字的字符串,第二参数是要转化的进制。

在js中参数的个数不需要严格一致,所以这样下来map的前两个参数都自动传给了parseInt,就会导致parseInt接受了不存在的进制(第二个参数一般为2,8,10,16)而显示NaN。所以需要正常显示就需要让parseInt接受一个值或者将其第二个值默认为10

 var a=['1', '2', '3'].map(function(x){return parseInt(x);});
 // [1, 2, 3]

3.reduce

Array的reduce()把一个函数作用在这个Array的[x1, x2, x3…]上,这个函数必须接收两个参数,reduce()把结果继续和序列的下一个元素做累积计算,

累加和

var arr = [1, 3, 5,3];
let results = arr.reduce(function (x, y) {
    return x + y;
}); // 12
console.log('results', results);

求积

var arr = [1, 3, 5,3];
let results = arr.reduce(function (x, y) {
    return x * y;
}); // 45
console.log('results', results);

要把[1, 3, 5, 7, 9]变换成整数13579,reduce()也能派上用场:

var arr = [1, 3, 5, 7, 9];
let results =  arr.reduce(function (x, y) {
    console.log(x,y);//x为结果,每次用结果和序列的下一个元素做计算
    // 1 3
    // 13 5
    // 135 7
    // 1357 9
    return x * 10 +y
});
console.log('results', results);//最后返回值13579

10.findIndex

var num = this.tableDataChange.findIndex((n) => n.state == "1");
//num == -1
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值