Uncaught TypeError: Reduce of empty array with no initial value

Uncaught TypeError: Reduce of empty array with no initial value

我正在尝试设计这个非常简单的应用程序,您在其中输入 2 个数字,该应用程序将计算 2 个输入数字之间所有数字的较小公倍数。

函数本身运行良好(从控制台的结果来看);但是,当我尝试使用事件侦听器 link 到 HTML 时,会出现故障。因此,我假设我在 link 到 HTML 时犯了一些错误。

对于某些数字,我的应用程序运行良好,但对于某些数字,出于某种原因,它不起作用(例如,输入 2 和 10、7 和 11...等)。错误说:

Uncaught TypeError: Reduce of empty array with no initial value

这是我的代码。

const smallNum = document.querySelector('#smallernum')
const bigNum = document.querySelector('#biggernum')
const button = document.querySelector('button')
const result = document.querySelector('#result')

button.addEventListener('click', () => {
  result.value = smallestCommons([smallNum.value, bigNum.value])
})


function smallestCommons(arr) {
  arr.sort((a,b) => a-b)

  let lowerNum = arr[0]
  let higherNum = arr[1]
  let newArr = []
  let primeOfArr = []
  let shortDivisionArr = [];

  // Create an array of nums inbetween the two extreme nums
  for(let i = lowerNum; i <= higherNum; i++) {
    newArr.push(i)
  }

  // Create an array of primes up until largest num
  for(let i = 1; i <= higherNum; i++) {
    let flag = 0;
    for(let j = 2; j < i; j++) {
      if(i % j === 0) {
        flag = 1;
        break;
      }
    }
    if(i > 1 && flag === 0) {
      primeOfArr.push(i)
    }
  }

  // Short Division
  for(let i = 0; i < primeOfArr.length; i++) {
    while(newArr.some((num) => num % primeOfArr[i] === 0)) {
      for(let j = 0; j < newArr.length; j++) {
        if(newArr[j] % primeOfArr[i] === 0) {
        newArr[j] = newArr[j] / primeOfArr[i]
        }
      } shortDivisionArr.push(primeOfArr[i])
    }
  }
  return shortDivisionArr.reduce((a,b) => a*b);
}
  <div class="container">
    <div id="main">
      <div class="title">
        <h2>This App Helps You Find The Smallest Common Multiple Of Consecutive Numbers Between 2 Nums!</h3>
        <p>2 nums inclusive. App for demonstration purpose. Please don't use this to cheat on your homework!</p>
      </div>
      <div class="calcs">
        <div class="inputnums">
          <input id="smallernum" type="text" placeholder="Enter a smaller num">
          <input id="biggernum" type="text" placeholder="Enter a bigger num">
        </div>  
        <button>Click to calculate!</button>
        <input id="result" type="text" placeholder="Result is here!">
      </div>
    </div>
  </div>

我做错了什么,我该如何解决?

问题已解决。 传递给函数的值(smallNum.value 和 bigNum.value)是字符串。 使用 parseInt() 将它们转换为整数,现在可以使用了。