Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript。通过只添加奇数来减少数组。当我对带有if的数字使用%2时,Javascript返回NaN_Javascript_Arrays_Numbers_Nan_Lf - Fatal编程技术网

Javascript。通过只添加奇数来减少数组。当我对带有if的数字使用%2时,Javascript返回NaN

Javascript。通过只添加奇数来减少数组。当我对带有if的数字使用%2时,Javascript返回NaN,javascript,arrays,numbers,nan,lf,Javascript,Arrays,Numbers,Nan,Lf,我试图求数组中所有奇数的和。 以下方法不起作用,返回NaN。有人能解释一下为什么吗? 我找到了一个解决方法,因此不需要其他代码。如果你能解释一下为什么(一个假定的数字)%2是NaN,那就太好了。谢谢。 (我刚刚开始学习Javascript。如果这是…,那么很抱歉) 如果是奇数,则不返回累加器,因此最后的结果是undefined+7,即NaN 对于偶数,始终返回当前累加器;如果是奇数,则返回累加器+该数 const arr=[1,2,3,4,5,6,7] const result=arr.red

我试图求数组中所有奇数的和。 以下方法不起作用,返回NaN。有人能解释一下为什么吗? 我找到了一个解决方法,因此不需要其他代码。如果你能解释一下为什么(一个假定的数字)%2是NaN,那就太好了。谢谢。 (我刚刚开始学习Javascript。如果这是…,那么很抱歉)


如果是奇数,则不返回累加器,因此最后的结果是
undefined+7
,即
NaN

对于偶数,始终返回当前累加器;如果是奇数,则返回累加器+该数

const arr=[1,2,3,4,5,6,7]
const result=arr.reduce((累加器,当前值)=>
当前值%2>0?累加器+当前值:累加器
)

log(result)
您只需要在
reduce
方法中添加一个
else
子句

因为对于偶数,您不返回任何表示函数返回
未定义的
,而现在当代码遇到奇数时,它会返回
未定义的+something
,即
NaN

让arr=[1,2,3,4,5,6,7];
让结果=arr.reduce((累加器,当前值)=>{
如果(当前值%2>0){
返回累加器+电流值;
}否则{
回流蓄能器
}
});
控制台日志(结果)
返回所有偶数值(这适用于所有不带a的函数),并且
未定义的
不能用于添加数字

为了防止这种情况,您需要返回蓄能器

让arr=[1,2,3,4,5,6,7],
结果=arr.reduce((累加器,当前值)=>{
如果(当前值%2>0){
返回累加器+电流值;
}//或者在这里使用其他
回流蓄能器;
});

控制台日志(结果)
如果
If
测试为
false
则函数将返回
undefined
.reduce()
的回调始终必须返回下一轮的
累加器的值:reducer函数的返回值被分配给累加器,累加器的值在整个数组的每次迭代中都会被记住,并最终成为最终的单个结果值
let arr=[1,2,3,4,5,6,7]

let result = arr.reduce((accumulator, currentValue) => {
  if (currentValue%2 >0){
    return accumulator + currentValue}})
console.log(result)