Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/425.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 使用+=获取总和在这里不起作用。为什么?_Javascript_Arrays_Ecmascript 6 - Fatal编程技术网

Javascript 使用+=获取总和在这里不起作用。为什么?

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 ==

若给定的值是自恋数字,我试图返回真或假

分配空变量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));