首页 > 试题广场 >

使用 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() {
    return Array.prototype.slice.call(arguments).reduce((pre,cur) => pre + cur)
}

发表于 2021-05-09 09:57:57 回复(0)
function useArguments() {
    let sum = 0;
    for (let i = 0; i < arguments.length; i++) {
        sum += arguments[i]
    }
    return sum
}
使用agruments获取对象并进行遍历,获取的对象为{"索引":"值" }
发表于 2021-04-01 10:58:20 回复(0)
 return eval([].slice.call(arguments).join('+'));
发表于 2021-03-18 10:55:32 回复(0)
function useArguments() {
    let arr=Array.prototype.slice.call(arguments,0);
    return arr.reduce((pre,cur)=>{
        return pre+cur;
    },0);
}
发表于 2021-03-04 10:52:54 回复(0)
function useArguments() {
    return Array.prototype.slice.call(arguments).reduce((total,curr)=>total+curr,0)
}

发表于 2020-05-04 11:03:02 回复(0)
function useArguments() {
    return Array.prototype.slice.call(arguments).reduce((cur,next) => {
        return cur+next
    },0)
}

发表于 2020-04-09 09:34:45 回复(0)
function useArguments() {
    return Array.from(arguments).reduce(function(a,b){return a+b})
}

根据现在有的题解优化一下 既然要用reduce 而arguments是类数组 可以直接使用Array.from把arguments转化为数组
发表于 2020-03-18 22:41:06 回复(0)
function useArguments() {
   const argArr = [...arguments]
   return argArr.reduce((acc, cur)=>
          acc + cur, 0)
}
发表于 2020-03-11 03:47:46 回复(0)
function useArguments() {
    var sum = 0;
    for(var i = 0; i < arguments.length; i++) {
        sum += arguments[i];
    }
    return sum;
}

function useArguments() {
    return Array.prototype.slice.call(arguments).reduce(function(prev, cur) {
        return prev + cur;
    });
}

发表于 2019-08-12 17:11:45 回复(0)
function useArguments() { var sum=0;   for(i=0;i<arguments.length;i++){   sum=sum+arguments[i];/*arguments表示的是包含实参的数组,该数组的数组元素是十几传入的参数*/  }  return sum; }

编辑于 2019-05-10 15:09:07 回复(0)
function useArguments() { var sum = 0;  for(var x in arguments) {
    sum+=arguments[x]
  } return sum; }

发表于 2019-04-29 22:03:34 回复(0)
function useArguments() {
    var sum = 0;
    for(var i = 0; i < arguments.length ;i++){
        sum += arguments[i]
    }
    return sum
}
发表于 2019-03-09 13:48:23 回复(0)

不支持ES6🤣

function useArguments() {
    return [...arguments].reduce((a,b)=>a+b)
} 
发表于 2019-03-04 19:58:29 回复(3)
function useArguments() {
    return [].slice.call(arguments).reduce(function(total,num){
        return total+num;
    })
}
发表于 2019-02-22 11:07:41 回复(0)
function useArguments() {
    return eval(Array.prototype.join.call(arguments, '+'))
}
发表于 2019-02-07 11:44:52 回复(0)
简单直观的就用
function useArguments() {
    var sum=0; 
    for(var i=0;i<arguments.length;i++){
        sum+=arguments[i];
    }
    return sum;
}
如果用.reduce或forEach就必须将arguments转换为数组:Array.prototype.slice.call(arguments)可以将类数组元素转换成数组。reduce归并方法可以参考高程里的。
发表于 2018-04-25 16:08:44 回复(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)

利用 Array.prototype.slice.call(arguments,0) 可以把函数的参数包装在一个数组当中,再调用数组的归并方法, array.reduce()。

function useArguments() {
    var arr = Array.prototype.slice.call(arguments,0);
    var sum = arr.reduce(function(pre,cur,index,array){
        return pre + cur;
    });
    return sum;
}
发表于 2017-10-17 18:20:06 回复(0)
function useArguments() {
    return [].slice.call(arguments).reduce( (pre, nxt) => pre + nxt );
}
发表于 2017-08-16 21:06:35 回复(0)
function useArguments() {  
var cout = 0;  
for(var i = 0;i  arguments.length;i++)  {  
cout = cout + arguments[i];}
return cout; 
}
发表于 2017-07-06 18:32:51 回复(0)