JavaScript的优雅编写

JavaScript的优雅编写

  初学前端的同学通常会听过这句话:“我们写前端不仅仅要考虑谷歌、火狐的兼容,也要考虑IE8的兼容”。
  实际上,兼容IE8会让我们花费超级多的时间与经历,如今还在应用IE8的用户我们已经可以抛弃了。毕竟,微软都已经要放弃这个亲儿子了。

  放弃了IE8的兼容特可以让我们更优雅的编写前端程序,借助JacaScript我们能很优雅的处理一些后端处理的数据;随着前端这么多年的进步,前端早已不仅仅是部件的摆放,以及简单动画的制作,前端已经慢慢的扩大,慢慢的入侵后端的领域了。


  很多前端同学处理数据往往用for循环或者eachfor。
  但是复杂的for循环使我们代码变得臃肿,很不容易让我们维护,并且,这样写出的代码距离优雅还有很远的距离。

今天给大家介绍3个方法,.map() , .reduce() , .filter() 。这几个语言在大多后端语言都有,
基本用法也一样。下面给介绍一下这几种方法的用途。


.map()

用于可迭代对象,每次处理一个迭代对象内的一个元素。下面用一个例子能让大家一下理解。

    var dataset = [
        {
    
    "name":"shi", "age":20,"class":"yun"},
        {
    
    "name":"wen", "age":19,"class":"wu"},
        {
    
    "name":"qi", "age":21,"class":"yun"},
    ]

这是我三个同学的名字、年龄、以及专业。我们想要一个他们年龄的数组,即[20,19,21]

下面用们对比一个传统处理与用.map()的区别:
.foeEach()

   var ageset = [];
    dataset.forEach(function (eachdata) {
    
    
        ageset.push(eachdata.age)
    })
    //[20, 19, 21]

.map()

    var ageset = dataset.map(function(eachdata{
    
    
        return eachdata.age;
    })
    //[20, 19, 21]

还可以用箭头方法简写:

    var ageset = dataset.map(eachdata =>eachdata.age)
    //[20, 19, 21]

所以.map()到底是怎么运作的呢?这个方法有两个参数,第一是回调方法,第二是可选内容(会在回调方法中做为this)。数组里的每个数值/对象会被循环进入到回调方法里面,然后返回新的数值/对象到结果数组里面。
注意结果数组的长度永远都会和被循环的数组的长度一致。


.reduce()

与.map()相识,.reduce()也是循环一个回调方法,数组里面的每一个元素对回进入回调方法。区别是回调方法返回的值会被传递到下一个回调方法,如此类推(等同于一个累加器)。

.reduce()里的累加值可以是任何属性的值,包括integer,string,object等等。这个累加值会被实力化或者传递到下一个回调方法。

我们计算.map()内数据的的年龄和来做一个例子:
.reduce():

    var  agecount = dataset.reduce(function (count,eachdata) {
    
    
        return eachdata.age + count;
    },0)
    //60

同样我们也可以用箭头方法简化:

   var agecount = dataset.reduce((count,eachdata)=>count+eachdata.age,0);
   //60

可见,我们可以很优雅的用一个方法计算累加的和。
同时,你可以试验一下用这种方法,返回年纪最大的,虽然这个好武艺意义,但是可以让你更好的理解这个方法。


.filter()

.filter()是一个过滤器,直接举例子:
还是用上一个数据,我们现在需要筛选出年龄大于等于20的同学的信息

.filter():

    var bigageset = dataset.filter(function (eachdata) {
    
    
        return eachdata.age>=20;
    })

同样我们可以用箭头方法简化:

    var bigageset = dataset.filter((eachdata) => eachdata.age>=20);

尾言

行百里者半九十,要学会这几个方法不是看看就可以的,真正想要熟练理解运用这几个方法,需要上手实战,实干出真知,空谈耍流氓。

快用这几个高效方法去简化你的代码,提高代码可读性吧。

优雅的程序员就是要把程序极简划。

猜你喜欢

转载自blog.csdn.net/weixin_44595299/article/details/115158318