javaScript区间求值算法挑战

给你一个包含两个数字的数组。返回这两个数字和它们之间所有数字的和。(最小的数字并非总在最前面

思路1:用sort()方法 对数字排序得出最大最小值,进行累加。

function sumAll(arr) {
    //对数组进行升序排序
    arr.sort(function(x,y){
        return x-y;
    });
    //定义一个变量,用来存放和
    var sum = 0;
    //求出和
    for(var i = arr[0];i <= arr[1];i++){
        sum += i;
    }
    //返回和
    return sum;

}

思路2:使用Math.max和Math.min获得数组的最大最小值,再把它们之间的数放入新的数组, 最后用 redece()方法获得和。

注:(1)js中Math.max(),Math.min()不能接受数组作参数,Math.max(array)这种操作是不存在的;
       而apply()是所有函数都有的方法,fun.apply(thisArg, [argsArray]),thisArg是fun 函数运行时指定的 this 值,

       argsArray是一个数组或者类数组对象,其中的数组元素将作为单独的参数传给 fun 函数。

       (2)reduce()方法可以对数组的每一个元素进行操作,下面代码中value是单个元素的值,sum则是这些元素的累加值。

function sumAll(arr) {
    //求数组中的最大值
     function getMaxOfArr(numArr) {
         return Math.max.apply(null, numArr);
     }
     //求数组中的最小值
     function getMinOfArr(numArr) {
         return Math.min.apply(null, numArr);
     }
     var max = getMaxOfArr(arr);
     var min = getMinOfArr(arr);
     //定义新数组,存放最大值和最小值之间所有的值 
     var newArr = [];
     for (var i = min; i <= max; i++) {
         newArr[i - min] = i;
     }
     //reduce方法求和
     var sum = newArr.reduce(function (sum, value) {
         return sum + value;
     }, 0);
     return sum;

}

思路3:判断数组中两个数的大小,进行累加求和。

function sumAll(arr) {
    var sum=0;  
    if(arr[0]<arr[1]){  
        for(var i=arr[0];i<=arr[1];i++){  
            sum += i;  
        }
    }else{  
        for(var k=arr[1];k<=arr[0];k++){  
            sum += k;  
        }  
    }  
    return sum; 
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值