Javascript array.push()方法引发TypeError
我正在尝试使用Javascript array.push()方法引发TypeError,javascript,arrays,Javascript,Arrays,我正在尝试使用array.reduce()实现array.map()。以下是我目前掌握的情况: function arrayMap(arr, fn) { return arr.reduce(function(a, elem) { return a.push(fn(elem)); }, []); } let x = arrayMap([1, 2, 3], function(elem) { return elem * 2; }); console.log(
array.reduce()
实现array.map()
。以下是我目前掌握的情况:
function arrayMap(arr, fn) {
return arr.reduce(function(a, elem) {
return a.push(fn(elem));
}, []);
}
let x = arrayMap([1, 2, 3], function(elem) {
return elem * 2;
});
console.log(x);
但是翻译给了我:
TypeError:a.push不是一个函数
即使提供累加器'a'
以减少为空数组。该方法返回数组的长度,而您返回的是长度。因此在下一次迭代中,a
将是一个数字(1
),而不是数组
要使其工作,您需要返回数组引用
function arrayMap(arr, fn) {
return arr.reduce(function(a, elem) {
a.push(fn(elem));
return a;
}, []);
}
函数数组映射(arr,fn){
返回arr.reduce(函数(a,元素){
a、 推(fn(elem));
返回a;
}, []);
}
设x=arrayMap([1,2,3],函数(elem){
返回元素*2;
});
控制台日志(x)代码>该方法返回数组的长度,您将返回长度。因此在下一次迭代中,a
将是一个数字(1
),而不是数组
要使其工作,您需要返回数组引用
function arrayMap(arr, fn) {
return arr.reduce(function(a, elem) {
a.push(fn(elem));
return a;
}, []);
}
函数数组映射(arr,fn){
返回arr.reduce(函数(a,元素){
a、 推(fn(elem));
返回a;
}, []);
}
设x=arrayMap([1,2,3],函数(elem){
返回元素*2;
});
控制台日志(x)代码>请改用
改用
您可以使用参数currentIndex
,其中的参数是数组中正在处理的当前元素的索引。如果提供了初始值,则从索引0开始,否则从索引1开始
函数数组映射(arr,fn){
返回arr.reduce(函数(a、元素、当前索引){
a[currentIndex]=fn(elem);
返回a;
}, []);
}
设x=arrayMap([1,2,3],函数(elem){
返回元素*2;
});
控制台日志(x)
您可以使用参数currentIndex
,该参数是数组中正在处理的当前元素的索引。如果提供了初始值,则从索引0开始,否则从索引1开始
函数数组映射(arr,fn){
返回arr.reduce(函数(a、元素、当前索引){
a[currentIndex]=fn(elem);
返回a;
}, []);
}
设x=arrayMap([1,2,3],函数(elem){
返回元素*2;
});
控制台日志(x)代码>这对于reduce
来说并不是一个很好的用例,因为您的“累加器”从头到尾都是一样的。当你注意到你迷失在无用的复杂性中。在我看来,使用forEach
会更干净。对于reduce
,这并不是一个很好的用例,因为您的“累加器”从头到尾都是一样的。当你注意到你迷失在无用的复杂性中。在我看来,使用forEach
会更干净。