JavaScript计算所需餐桌数及剩余无座宾客数问题求助
解决calculateTables函数的实现问题
现有代码的问题
你当前的代码存在几个关键错误:
- 错误将
guests(数字参数)当成数组处理,使用了guests.length和guests[i],这部分循环完全没有意义,因为guests不是数组。 - 只处理了宾客数能被座位数整除的情况,没有覆盖有余数的场景,也没有正确计算餐桌数和剩余宾客数。
正确实现思路
要解决这个问题,只需要两个核心运算:
- 剩余宾客数:用取余运算符
%直接计算,得到无法被单桌座位数容纳的宾客数量。 - 餐桌数量:对总宾客数除以单桌座位数的结果取整数部分,得到需要的完整餐桌数。
修正后的代码
function calculateTables(guests, seats) { const tables = Math.floor(guests / seats); const remainingGuests = guests % seats; return { tables, remainingGuests }; }
代码解释
Math.floor(guests / seats):对除法结果向下取整,得到坐满宾客的餐桌数量,比如14除以6得到2.333,取整后是2张满座餐桌。guests % seats:取余运算直接得到没座位的剩余宾客数,14对6取余得到2,正好对应示例中的结果。- 返回对象时,因为变量名和属性名一致,可以用简写语法
{ tables, remainingGuests },等价于{ tables: tables, remainingGuests: remainingGuests }。
验证示例
calculateTables(4, 2)→{ tables: 2, remainingGuests: 0 }(符合预期)calculateTables(14, 6)→{ tables: 2, remainingGuests: 2 }(符合预期)calculateTables(26, 5)→{ tables: 5, remainingGuests: 1 }(符合预期)
内容的提问来源于stack exchange,提问作者Mahmud
相关产品推荐
相关产品推荐

