超市队列-Javascript最佳实践解决方案

问题描述

在学习基本javascript的旅途中,我遇到了Code Wars网站,该网站面临一个不同的问题。我对JavaScript开发非常陌生,并且通过研究针对这些问题的最佳实践解决方案并尝试重新构建和理解它们,Code Wars在理解基本js逻辑方面起到了很大的帮助作用。在google,youtube等的帮助下,我设法了解了大多数最佳实践解决方案,尽管我现在遇到了问题-最佳实践解决方案-但它帮助我进一步了了对javascript的理解,但是我只是无法理解它的逻辑及其工作原理。我非常感谢能够用假人解释最佳实践解决方案的任何人。

问题:超市中有一个自助结账的队列。您的任务是编写一个函数来计算所有客户退房所需的总时间! 所有说明都可以在CodeWars页面上找到:https://www.codewars.com/kata/57b06f90e298a7b53d000a86/train/javascript

最佳实践解决方案如下:

function queueTime(customers,n) {
  var w = new Array(n).fill(0);
  for (let t of customers) {
    let idx = w.indexOf(Math.min(...w));
    w[idx] += t;
    
  }
  return Math.max(...w);
}

样本测试:

Test.describe("example tests",function() {
Test.assertEquals(queueTime([],1),0);
Test.assertEquals(queueTime([1,2,3,4],10);
Test.assertEquals(queueTime([2,4,2),9);
Test.assertEquals(queueTime([1,5],100),5);

//add some more example tests here,if you like

})

我遇到的主要困难是我不了解'w'变量如何与'for of'函数相互作用。以我的理解,“ w”是一个填充有零的数组,因此w.indexOf方法如何找到最小值。值添加到idx变量?总的来说,我将非常感谢能够分解最佳实践解决方案的任何人。

谢谢, 杰罗姆(Jerome)

解决方法

最初,w是一个充满0的数组

然后,代码将idx设置为最小值的索引。

该索引第一次为0

let idx = [0,0].indexOf(Math.min([0,0])); // 0

所以对于t === 1,w [0] + = t变为[1,0]

下次:

let idx = [1,0].indexOf(Math.min([1,0])); // 1

所以对于t === 2,w [1] + = t变为[1,2,0]

以此类推

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...