使数组成为一个函数,为数组中的数字添加一个给定值

时间:2017-09-23 16:43:06

标签: javascript arrays function ecmascript-6 numbers

所以我遇到了编写一个函数的问题,该函数将获取一个给定的数组,向其添加一个给定的数字并输出一个新的数组,将给定的数字添加到数组中的每个元素..所以given_array = [1,2 ,3,4,5] ...函数add(5).... new_array(或者可能更改旧数组)= [6,7,8,9,10]。

以下是问题:

// write code so that console logs print out true
//   add(addValue) should return a new arrays where addValue
//   is added to each value of original array
//   i.e. [6, 7, 8, 9, 10] > 

var e = [1, 2, 3, 4, 5];
console.log(e.add(5) == '[6,7,8,9,10]');

这给了我我的结果,但这不是问题

var e = [1, 2, 3, 4, 5];
var addValue = (e, Val) => e.map(add=>add+Val);

console.log(addValue(e,5));

3 个答案:

答案 0 :(得分:2)

编写一个接受你要添加的整数的函数,并返回一个新函数,当你将数组传递给它时,它会执行加法计算:

%config InlineBackend.close_figures=False

<强> DEMO

您甚至不需要创建一个新变量来保存返回的函数:

function add(n) {
  return function (arr) {
    return arr.map(function (el) {
      return n + el;
    });
  }
}

const add5 = add(5);
add5([1, 2, 3, 4, 5]); // [6, 7, 8, 9, 10]

在ES6单行中:

add(5)([1, 2, 3, 4, 5]);

<强> DEMO

如果你真的想将它添加到const add = (n) => (arr) => arr.map(el => n + el); (确保你检查你提出的新方法是否已经在原型上):

Array.prototype

<强> DEMO

答案 1 :(得分:1)

最直接的方法是使用传入的Array#add()参数,在number内使用范围函数调用Array#map()

&#13;
&#13;
Array.prototype.add = function add (number) {
  return JSON.stringify(this.map(value => value + number))
}

var e = [1, 2, 3, 4, 5]

console.log(e.add(5) == '[6,7,8,9,10]')
&#13;
&#13;
&#13;

您必须换入JSON.stringify()的原因是因为Array#toString()Array#join()不包含JSON编码中的包装方括号。

答案 2 :(得分:0)

使用原型

Array.prototype.add = function(val) {
    for(var i=0;i<this.length;i++){
         this[i] = this[i]+val;
    }
};
e.add(6);
console.log(e);