如何将数组元素值加倍

时间:2017-02-27 04:07:25

标签: javascript functional-programming

我有数组元素,我试图仅使用过滤器方法(而非地图)乘以2.输出我期待的东西看起来像这样[2,4,6,8,10 ]。这是我的代码

  var array = [1,2,3,4,5];
  array.filter( val => val * 2);

6 个答案:

答案 0 :(得分:4)

不是filter,在这种情况下你应该使用map函数。

var array = [1,2,3,4,5];
array = array.map(function(val){return val*2;});
console.log(array);

Demo

答案 1 :(得分:1)

通过仅使用过滤方法...您可以尝试像迭代器一样使用它(请注意,这不是如何使用过滤器):

 var array = [1,2,3,4,5];
 array.filter( function (val, i, array) { array[i] = val * 2; });
 //array now has [2,4,6,8,10]

这很难看,但如果你只能使用filter

,这就是你要做的

答案 2 :(得分:0)

尝试使用此

 var new_array = array.map(function(e) { 
      e = e*2; 
      return e;
    });

答案 3 :(得分:0)

首先,您需要了解mapfilterreduce的功能。

根据您的要求,它应该是map的功能,但您希望使用filter并不明显。

<强>地图

When you call map on an array, it executes that callback on every 
element within it, returning a new array with all of the values 
that the callback returned.

过滤

filter executes that callback on each element of the array, and spits
out a new array containing only the elements for which the callback returned true.

let items = ['1','2','3','4','5'];

let numbers = items.map(item=>item*2);

console.log(items);
console.log(numbers);

答案 4 :(得分:0)

如果你真的想使用filter(),你可以这样做:

Array.prototype.filter = Array.prototype.map
var array = [1,2,3,4,5];
array.filter( val => val * 2);

但请不要。

答案 5 :(得分:0)

var numList = [1, 2, 3, 4, 5, 6, 7,8 ];

var doubleUp = (array) => array.map(item=>item*2);

console.log(doubleUp(numList));

//返回 [ 2、4、6、8 10、12、14、16 ]