我有一个工作任务,有这样的问题

There is a building with unlimited floors. Within each floor there are a number of lockers with consecutive locker numbers, in a configuration like this:
Floor. 1 there are 5 lockers, number 1-5
Floor. 2 there are 6 lockers, numbers 6-11
Floor. 3 there are 7 lockers, numbers 12-18
Floor. 4 there are 5 lockers, numbers 19-23
Floor. 5 there are 6 lockers, numbers 24-29
Floor. 6 there are 7 lockers, numbers 30-36
Etc…
Create a function that takes a locker number parameter, and returns the floor number

解决这个问题的最佳代码是什么?非常感谢.

我编写了以下代码:

const Floor= 10;

for (let i = 1; i < lantai + 1; i++) {
    var lokerStart = 0;
    var lokerEnd = 0;
    
  if (i % 3 === 1) {
        lokerStart = i;
        lokerEnd = lokerStart + 4;
  } else if (i % 3 === 2) {
    lokerStart = 6;
        lokerEnd = lokerStart + 5;
  } else if (i % 3 === 0) {
    lokerStart = 12;
        lokerEnd = lokerStart + 6;
  }
  console.log("Floor", i, ", Locker Number", `${lokerStart} - ${lokerEnd}`);
}

但它的结果是:

Floor 1 ,Locker Number 1 - 5
Floor 2 ,Locker Number 6 - 11
Floor 3 ,Locker Number 12 - 18
Floor 4 ,Locker Number 4 - 8
Floor 5 ,Locker Number 6 - 11
Floor 6 ,Locker Number 12 - 18
Floor 7 ,Locker Number 7 - 11
Floor 8 ,Locker Number 6 - 11
Floor 9 ,Locker Number 12 - 18
Floor 10 ,Locker Number 10 - 14

我想要一个函数,通过输入储物柜号码19来获得正确的楼层,然后得到4楼.

推荐答案

您的问题正文(您try 的解决方案)似乎与您的问题不匹配:您需要创建一个函数,该函数获取储物柜编号作为输入(参数)并返回发言权.

可能有一种纯粹的数学方法可以做到这一点.同时,我的解决方案有点天真,它从一楼开始,随着楼层的上升(判断while),不断根据您的规则(5,6,7,5,6,7,5)添加储物柜,直到找到正确的楼层:

function getFloor(n) {
  let currentFloor = 1;
  let lockersArray = [5, 6, 7];
  let lockersSoFar = lockersArray[(currentFloor - 1) % 3];
  while (n > lockersSoFar) {
    currentFloor++;
    lockersSoFar += lockersArray[(currentFloor - 1) % 3];
  }
  return currentFloor;
};

console.log(getFloor(4))
console.log(getFloor(18))
console.log(getFloor(19))
console.log(getFloor(42))
console.log(getFloor(128))

Javascript相关问答推荐

为什么从liveWire info js代码传递数组我出现错误?

通过嵌套模型对象进行Mongoose搜索

当运行d3示例代码时,没有显示任何内容

在服务器上放置了Create Reaction App Build之后的空白页面

将本机导航路由react 到导航栏中未列出的屏幕?

处理时间和字符串时MySQL表中显示的日期无效

setcallback是什么时候放到macrotask队列上的?

在JS中拖放:检测文件

优化Google Sheet脚本以将下拉菜单和公式添加到多行

可更改语言的搜索栏

如何在Angular17 APP中全局设置AXIOS

Reaction Native中的范围滑块

如何使用JS创建一个明暗功能按钮?

如何在 Select 文本时停止Click事件?

在FAQ Accodion应用程序中使用React useState时出现问题

如何在DYGRAPS中更改鼠标事件和键盘输入

是否可以在Photoshop CC中zoom 路径项?

如何确保预订系统跨不同时区的日期时间处理一致?

Jexl to LowerCase()和Replace()

Reaction即使在重新呈现后也会在方法内部保留局部值