• js的数组(二)


    今天来做第二题,rt:

    计算数组的集合,已知数组都是number类型。求和

    很简单的一道题目,一般都是遍历之后每一个i += 然后return出去,没啥好说的,先介绍几个js方法,就不会这么认为了。

    1.Array.prototype.reduce():

    2.forEach,之前有写过,不清楚的可以看第一篇

    3.map,同上

    4.常用的for循环

    5.eval  这是一个黑科技,感觉有背js设计,但是很简单,也能满足需求

    1.Array.prototype.reduce():看看兼容如何,ie9以上,其他全兼容(chrom,firefox),mdn上原话是:The reduce() method applies a function against an accumulator and each element in the array (from left to right) to reduce it to a single value.翻译了一下reduce() 方法对累加器和数组中的每个元素 (从左到右)应用一个函数,将其减少为单个值。

    我也看不懂,看看语法:

    array.reduce(function(accumulator, currentValue, currentIndex, array), initialValue)
    个人认为,就是reduce接受一个函数,里面有4个参数让你填,1.初始值,或者上一次回调的返回值;2.数组正在处理的的元素,也就是循环中每次遍历的i;3.元素索引相当于循环汇总的i;
    4.就是数组,需要处理的数组;5.initialValue,就是设置初始值,如果不填,那么数组中的第一个就是初始值,空数组直接报错!!

    思路:reduce接受4个参数,那么我们只要前两个参数就可以完成,上一次回调的返回值,个人理解,当数组[1,2,3,4]第一次一个参数是1,那么第二次就是进行运算之后的值,第三次就是第二次的值+第4个值,以此类推
    索引值不需要pass,数组可选可不选,说的不是很清楚,这张图应该看明白了。

    最后返回结果是10,https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce 原文地址;

    上代码解题:
    var arr = [1,2,3,4,5];
    if(Array.prototype.reduce()){
      arr.reduce(function(a,b){
        return a+ b
    },0)    
    }
    返回:15
    
    

    如果这个初始0设置成10,那么就是10 +15 =25 返回25;

    2.forEach解题:

    var arr = [1,2,3,4,5];
    var num = 0;
    arr.forEach(function(val, index, arr){
        num += val
    })
    
    return num
    
    //返回15

    3.map解题:

    var arr = [1,2,3,4,5];
    var num = 0;
    arr.map(function(a){
      num +=a
    })
    return num ;
    //返回15

    4.一般循环

    var arr = [1,2,3,4,5];
    var num = 0;
    for(var i = 0;i<arr.length;i++){
       num += arr[i]
    }
    return num;
    //返回 15

    5.eval

    避免在不必要的情况下使用eval,重要!

    eval很特别,他可以把数字类的字符串进行运算。属于String类吧,但是他可以+-*%,number类吧,他只接受string!

    上代码:

    var arr = [1,2,3,4,5];
    var num = eval(arr.join('+'));
    console.log(num)
    console.log(typeof num)
    
    //返回 15
    //返回 number -。-

    总结:虽然eval很简单,但是还是不要用好一点,也就是面试的时候嘚瑟嘚瑟,没啥用,解决实际的map最佳。

    写这篇文章的时候也是学习,reduce的api,复习forEach的api,这些比较简单的题目,可以多练习,打好基础比什么都重要,这是对自己说的。

     
     
  • 相关阅读:
    关于php操作windows计划任务管理
    学习: 导航器添加修饰符
    写给想学 Javascript 朋友的一点经验之谈
    Firebug Tutorial – Logging, Profiling and CommandLine (Part I)
    getElementsByClass(2)
    关于JavaScript的事件
    Javascript修改对象方法
    采用哪种方式(JS高级程序设计)
    getElementsByClass(1)
    让CSS更简洁、高效些,别再想当然了
  • 原文地址:https://www.cnblogs.com/damai/p/7302271.html
Copyright © 2020-2023  润新知