首页 > 试题广场 >

使用 arguments

[编程题]使用 arguments
  • 热度指数:44196 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
函数 useArguments 可以接收 1 个及以上的参数。请实现函数 useArguments,返回所有调用参数相加后的结果。本题的测试参数全部为 Number 类型,不需考虑参数转换。
示例1

输入

1, 2, 3, 4

输出

10
推荐
本题考查的是对于arguments的使用,arguments能获得函数对象传入的参数组,类似与一个数组,能够通过length获取参数个数,能通过下标获取该位置的参数,但是它不能使用forEach等方法。本题先通过arguments.length获得参数个数,然后循环求和,得出结果。

function useArguments() {
  /*
   因为参数数量不定,可以先获取参数个数arguments.length
   然后循环求值
  */
  //声明一个变量保存最终结果
  var sum = 0;
  //循环求值
  for(var i = 0; i < arguments.length; i++){
      sum += arguments[i];
  }
  return sum;
 }

编辑于 2015-08-18 21:04:44 回复(18)
function useArguments() {
    var args = Array.prototype.slice.call(arguments, 0);
    return args.reduce(function(prev, curr, idx, arr) {
        return prev + curr;
    });
}

发表于 2017-04-13 16:28:00 回复(0)
function useArguments() {
var arr = [...arguments]
    var sum = 0
    for(var i = 0 ;i < arr.length; i++){
        sum+=arr[i]
    }
    return sum
}


发表于 2022-07-20 18:31:54 回复(0)
arguments能获得函数对象传入的参数组,类似于一个数组,能够通过length获取参数个数,能通过下标获取该位置的参数,但是它不能使用forEach等方法。
function useArguments() {
    var result = 0;
    for (var i = 0;i< arguments.length;i++){
        result += arguments[i];
    }
    return result;
}


发表于 2022-03-27 21:34:19 回复(0)
function useArguments() {
    return eval([...arguments].join('+'));
    return [...arguments].reduce((pre, cur) => cur += pre);
    return Array.prototype.reduce.call(arguments, function (a, b) { return a + b; });
}

发表于 2022-01-07 09:40:17 回复(1)
function useArguments(...arr) {
    return arr.reduce((item, num) => {
        return item + num
    }, 0)
}
发表于 2021-10-07 16:20:01 回复(0)
function useArguments() {
    return Array.from(arguments).reduce((acc, cur) => acc + cur)
}

发表于 2021-09-08 23:01:38 回复(0)
function useArguments() {
    // arguments 类数组转数组
    // 1. const arr = Array.prototype.slice.call(arguments)
    // 2. const arr = Array.from(arguments)
    const arr = [...arguments]
    // 调用数组的reduce() 方法求和
    return arr.reduce((acc, cur) => acc + cur)
}

发表于 2021-08-01 11:33:49 回复(0)
function useArguments(...args) {
    return args.reduce((p, c) => p + c, 0);
}
发表于 2021-07-30 15:48:44 回复(0)
function useArguments() {
    return Array.prototype.slice.call(arguments).reduce((pre,cur) => pre + cur)
}

发表于 2021-05-09 09:57:57 回复(0)
function userArguments(){
    //将arguments对象转化为数组
    let res = Array.prototype.slice().apply(this);
    //es6语法Array.reduce()和箭头函数
    return res.reduce((total,num) => total += num);
}

发表于 2020-11-15 22:29:48 回复(0)
function useArguments() {
    var res = [...arguments].reduce(function(pre,cur,index,array){
        return pre +  cur
    })
    return res
}

发表于 2020-05-04 20:54:31 回复(0)
function useArguments() {
    return Array.prototype.slice.call(arguments).reduce((sum,curr) => sum + curr,0)
}
slice得加上
发表于 2020-03-25 12:12:49 回复(0)
用最优雅的方式完成类数组对象的转换
function useArguments() {
    var newArr = [].slice.call(arguments)
    return eval(newArr.join('+'))
}

发表于 2020-02-17 21:37:23 回复(0)
function useArguments() {
    return [].slice.call(arguments).reduce(function(total,num){
        return total+num;
    })
}
发表于 2019-02-22 11:07:41 回复(0)
 function useArguments() {
    return Array.prototype.reduce.call(arguments,function(n1,n2){
        return n1+n2;
    })
}

发表于 2018-09-12 11:15:18 回复(0)
function useArguments() {
    var s=0;
    Array.prototype.forEach.call(arguments,(function(e){s+=e}))
    return s
} 直接call foreach来用就好啦 还缓存数组干嘛??
发表于 2018-04-04 11:38:45 回复(0)
function handler(arr, callback) {
    if(arr.length === 1) return arr[0];
    return arr.reduce(function(res, cur) {
        return callback(res, cur);
    });
}

function useArguments() {
    return handler([].slice.call(arguments), 
         function(res, cur) {
            return res + cur;
         }
    );
}
发表于 2018-03-30 15:25:14 回复(0)
服气,我擦。居然不可以用let。**
发表于 2017-07-13 16:07:04 回复(1)
function useArguments() {
	return eval([].join.call(arguments, '+'))
}

发表于 2017-03-29 20:29:28 回复(0)
将arguments转换成数组,进行相加
function useArguments() {
	var  sum=0;
	var arr=[].slice.call(arguments);
	arr.forEach(function(e){
			sum=sum+e;
		}
	)
	return sum;
}


发表于 2016-12-22 15:01:01 回复(1)