我有数组元素,我试图仅使用过滤器方法(而非地图)乘以2.输出我期待的东西看起来像这样[2,4,6,8,10 ]。这是我的代码
var array = [1,2,3,4,5];
array.filter( val => val * 2);
答案 0 :(得分:4)
不是filter
,在这种情况下你应该使用map
函数。
var array = [1,2,3,4,5];
array = array.map(function(val){return val*2;});
console.log(array);
答案 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)
首先,您需要了解map
,filter
和reduce
的功能。
根据您的要求,它应该是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 ]