【问题标题】:A=0, B=1, C=2, ... , Z=25, AA=26, AB=27..etc how to do that? [duplicate]A=0, B=1, C=2, ... , Z=25, AA=26, AB=27..etc 怎么做? [复制]
【发布时间】:2018-09-07 13:41:30
【问题描述】:

我从 google 获得了一项工作功能,但我无法理解。我还需要写反向函数

有人能解释一下逻辑吗? AA 变成 26 的计算和语法如果你愿意的话......

这个:当你输入 27 它给你 aa

function idOf(i) {
    return (i >= 26 ? idOf((i / 26 >> 0) - 1) : '') +  'abcdefghijklmnopqrstuvwxyz'[i % 26 >> 0];
}

【问题讨论】:

  • 您可能想问the original author。我猜你就是从那里得到代码的,对吧?
  • 递归似乎很简单。您不了解它的哪一部分?你也可以用笔和纸一步一步地评估idOf(27)吗?试试看。
  • 是的,我应该问原作者。但后来我担心这个帖子是 7 年前的……
  • 至少有人能解释一下语法吗?就像我不明白是什么?和 >> 和 : 在 return 语句中。
  • @messerbill 简单:我写了答案:-) 或者如果您参考第一个链接,我尝试search for the name of the function

标签: javascript arrays math


【解决方案1】:

好的,让我们分解一下。

(i >= 26 ? idOf((i / 26 >> 0) - 1) : '')

如果 i 大于 25,函数将递归调用自身。如果小于 26,则返回空字符串

'?'是三元运算符。你可以把它翻译成

if (i= 26) { return idOf((i / 26 >> 0) - 1) } else { return '' }

下一节:

+  'abcdefghijklmnopqrstuvwxyz'[i % 26 >> 0]

这将获取字符串x位置的字母,x为(i % 26 >> 0)并将其添加到上一部分的字符串中

i % 26 >> 0 似乎只是得到 i % 26 的剩余部分。如果您想了解此运算符,请查看 MDN

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多