创建一个将参数转换为数组的函数

时间:2016-11-30 13:47:29

标签: javascript arrays function parameters

我需要创建一个函数,它将整数的函数参数解析为数组列表。

因此,如果我们调用这样的函数:sum(1, 4 ,7); 然后在函数'sum'内部,arguments变量/ keyword将看起来像这个[1, 4, 7]。 我需要创建一个sum函数,以便它可以接受任意数量的参数并返回所有参数的总和。

到目前为止,这是我的代码:

function sum ([a,b]) {
var arr = [a,b];
var sum =arr.reduce(add, 0);

function add(a, b) {
return a + b;
}
}

我也试图这样:

function sum ({
  arr[0]: 1;
  arr[1]: 2;
  arr[2]:3;

  var sum =arr.reduce(add, 0);

function add(a, b) {
return a + b;
}
})

但我显然做错了。

4 个答案:

答案 0 :(得分:2)

试试这个

function sun () {
  return Array.prototype.reduce.call(arguments, function(pre, cur) {
    return pre + cur
  }, 0)
}

这是你的需要。

答案 1 :(得分:0)

试试这个ES6解决方案。

let sum = (...args) => args.reduce((a, b) => a + b, 0);

您可以查看rest parameters的MDN文章了解更多详情。它主要用于检索数组中的参数列表。

答案 2 :(得分:0)

只是将arguments更改为像对象一样的数组数组,您可以使用Array.apply

了解更多:



function x() {
    return Array.apply(Array, arguments);
}

var array = x(1, 4, 7);

console.log(array);
console.log(typeof array);
console.log(Array.isArray(array));




答案 3 :(得分:0)

var sum =function() {
    var args = [];
    args.push.apply(args, arguments);
    return args.reduce((a,b) => { return a+b}, 0); // ES6 arrow function
}
sum(1,2,3); // return 6