【问题标题】:Cant stop the flow of a loop | Javascript [duplicate]无法停止循环的流动 | Javascript [重复]
【发布时间】:2021-11-16 09:31:42
【问题描述】:

我正在尝试返回一个 int,它计算 int 的最后一个零,但是当它找到不为零的东西时,我无法停止循环的流动。怎么了?

const endZeros = (value) => {
  const stringValue = `${value}`
  const arrValue = stringValue.split("").reverse()
  let total = 0;
  arrValue.map(el => {
    if (el === "0") {
      total = total + 1
    } else {
      return // I check return false too (and true, and all! --> desesperation)
    }
  })
  return total;
}

endZeros(100100)

谢谢大家❤️

【问题讨论】:

  • 使用带中断的for-loop 而不是.map
  • 您尝试过什么解决问题的方法?你能分享一个输入数组来重现这个问题吗?

标签: javascript loops


【解决方案1】:

一个简单的正则表达式怎么样?

const lastZeros = num => { const zeros = String(num).match(/0+$/); return zeros ? zeros[0].length : 0 };

console.log(lastZeros(100100))
console.log(lastZeros(111111))
console.log(lastZeros(101000))

【讨论】:

  • 哇,我印象深刻!,事实是我没有想过用正则表达式来做,但有一些东西引起了我的注意:const zeros = String(num).match(/0+$/); 的结果是这样的@ 987654323@ 根据typeof 一个对象(数组) 但是那是从哪里来的呢?我在哪里可以找到有关该响应的更多信息?非常非常非常感谢!
  • 我不知道你在问什么......你说的是String(num).match(/0+$/)的“匹配”对象
  • 对不起,我会尽量解释清楚,但我理解它的困难,因为我们以不同的方式思考,我的意思是我不理解这个结果:['0', index: 5, input: '201010', groups: undefined]--> match() return this总是数组?
  • 是的:它正在寻找“0”,在第 5 位找到最后一个,输入是 201010,并且没有定义(组) - 分配的 toString 是匹配项。我从不调试匹配对象。如果我使用组,我会破坏它
猜你喜欢
  • 2018-02-12
  • 1970-01-01
  • 2013-08-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-30
  • 1970-01-01
  • 2019-05-03
相关资源
最近更新 更多