Javascript 使用+=获取总和在这里不起作用。为什么?
若给定的值是自恋数字,我试图返回真或假 分配空变量sum后,尝试使用+= 但是,我不知道它在这里不起作用Javascript 使用+=获取总和在这里不起作用。为什么?,javascript,arrays,ecmascript-6,Javascript,Arrays,Ecmascript 6,若给定的值是自恋数字,我试图返回真或假 分配空变量sum后,尝试使用+= 但是,我不知道它在这里不起作用 function narcissistic(n) { let arr = Array.from(String(n), Number); // ex) 999 => [9,9,9] let sum; arr.forEach((e) => { sum += Math.pow(e,arr.length) ; }) return sum ==
function narcissistic(n) {
let arr = Array.from(String(n), Number);
// ex) 999 => [9,9,9]
let sum;
arr.forEach((e) => {
sum += Math.pow(e,arr.length) ;
})
return sum === n ? true: false
}
它导致了NaN。不知道为什么?
所以我不得不用这个,它很有效
function narcissistic(n) {
let arr = Array.from(String(n), Number);
// ex) 999 => [9,9,9]
let newArr = [];
arr.forEach((e) => {
newArr.push(Math.pow(e,arr.length)) ;
})
let sum = newArr.reduce((a,b) => a+b);
return sum === n ? true: false
}
所以我的问题是,为什么第一个在求和+=?时不起作用?你需要使和等于0-它开始时是未定义的,任何未定义的数学都会导致NaN
这会解决你的问题
更简洁的方法是使用reduce:
我们应该在引用之前初始化变量 设和=0
它可以解决您的问题。让sum=0;会修正自恋数吗?不相关,但返回和===n?true:false只是表示返回和===n的一种冗长而模糊的方式
let sum = 0;
let sum = arr.reduce((a, c) => a + Math.pow(c, arr.length));