此问题在此处已有答案:
(33个答案)
change values in array when doing foreach(11个答案)
昨天关门了。
问题陈述是,我应该用0替换5以下的任何数字,用1替换5及以上的任何数字。
我正在尝试重新分配值,但没有影响,为什么?
function fakeBinary(n) {
let numbersArr = n.split('');
numbersArr.forEach(num => {
if(Number(num) < 5) {
num = '0';
} else if(Number(num) >= 5) {
num = '1';
}
});
return numbersArr.join('');
}
console.log(fakeBinary('3457'));
I除了0011
的输出,但实际输出是3457
。
4条答案
按热度按时间uxhixvfz1#
这样使用
forEach
不会做任何事情-使用map
代替。请注意,要生成所需的输出,您需要稍微更改条件:
ar5n3qh52#
forEach
不会带来元素对原始值的引用,而是带来值的副本。您可以轻松地通过索引手动访问它:请注意,您也可以使用其他原型,我只是尽可能地接近您的解决方案,您可能还希望使用
map
,甚至(尽管不合适)reduce
,甚至常规的for循环。sgtfey8w3#
要使用forEach来实现这一点,您需要使用额外的参数来引用数组和索引。
但是forEach不是返回一个新数组的正确方法。
flseospp4#
使用
Array.from()
的较短版本