javascript - 如何检查JavaScript数组中是否存在一个值,继续加0.15直到不存在,然后将该值添加到数组末尾?

标签 javascript arrays

我有许多文本输入元素,其中包含人员轮类的开始时间(例如 9:00、9:30、10:00 等)。

我的代码将一个一个地遍历这些元素并将它们推送到一个数组中。如果该值已经存在于数组中,我需要将时间加上 15 分钟(0.15),然后再次检查它是否存在。这将一直持续到该值不存在,然后将其推送到数组。

例如: 约翰 - 9:00 账单 - 9:00 朱莉 - 9:30 山姆 - 9:30 托尼 - 9:30

时间 = []

第一次是9:00,不及时,所以会加上。 Times 现在等于 [9]。下一个是 9:00,它确实存在,所以我加 0.15,得到不存在的 9.15,所以现在时间 = [9, 9.15]。这对所有元素都会继续。 如果小数点等于 .60,那么我需要将小时加 1,因此对于托尼来说,加的时间将是 10。

我知道我可以只用一个 if 语句检查一次,但是我如何继续添加 15 并继续检查 2、3、4+ 次?

if( times.contains(value)) {
      times.push(value + 0.15)
 }

要这样做,我需要大量的 if 语句。如何反复检查,一添加就结束循环?

最佳答案

你可以拿一个Set并递增该值直到它不在集合中,然后映射该值。

此方法使用十进制值 15 分钟,即 0.25 一刻钟。

var times = [9, 9, 9.5, 9.5, 9.5],
    adjusted = times.map((s => t => {
        while (s.has(t)) {
            t += 0.25;
        }
        s.add(t);
        return t;
    })(new Set));
    
console.log(adjusted);

关于javascript - 如何检查JavaScript数组中是否存在一个值,继续加0.15直到不存在,然后将该值添加到数组末尾?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54397061/

相关文章:

javascript - NodeJS、AngularJS - 在服务器中发布事件并监听

javascript - 图像的宽度不会增长到等于父 div 的宽度

arrays - 使用字符串标题将numpy数组保存到csv

javascript - 奇怪的 ng-model 行为(ng-model 映射到数组元素)

java - 在数组中输入两次相同的数字

javascript - JS 中嵌套列表项的多维数组或 json 对象

javascript - jsFiddle 中的日期不提醒

javascript - 将原型(prototype)与 "Namespace"用于现有对象

javascript - rails 使用 javascript 渲染 View onclick

python - 创建一个大小为 n 且具有初始值的数组