所以我遇到了编写一个函数的问题,该函数将获取一个给定的数组,向其添加一个给定的数字并输出一个新的数组,将给定的数字添加到数组中的每个元素..所以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));
答案 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()
:
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;
您必须换入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);