for(let item of timeArray){ for(let itm of item.busyTime){ const start = toMinutes(itm.busyStart); const end = toMinutes(itm.busyEnd); if (givenEnd <= start || givenStart >= end) { // no overlap continue; } else { // overlap return true; } } }改写代码,return true改成结束最外层循环
时间: 2024-02-10 18:08:12 浏览: 31
可以使用标签语句 (label statement) 来结束最外层循环。具体做法是在最外层的循环语句前面加上一个标签,然后在内层循环中使用 `break` 语句时带上这个标签。这样就可以直接结束最外层的循环了。
以下是改写后的代码示例:
```
outer:
for (let item of timeArray) {
for (let itm of item.busyTime) {
const start = toMinutes(itm.busyStart);
const end = toMinutes(itm.busyEnd);
if (givenEnd <= start || givenStart >= end) {
// no overlap
continue;
} else {
// overlap
break outer;
}
}
}
```
在这个例子中,我们在最外层循环前面加上了 `outer` 标签。当内层循环中满足条件时,我们使用 `break outer` 语句结束了最外层循环。如果没有使用标签语句,那么 `break` 语句只会结束当前的内层循环,而不会结束最外层的循环。
相关问题
调用obtainAList()函数时不希望触发watch: { selectors: debounce(function () { this.calendarComponentUp(); console.log(this.timeArray); this.uploaded(); console.log(this.selectors); // this.obtainAList(); this.dutyTableData = this.transferStation.filter(item => item.alarmWeekDay == this.week); console.log(this.dutyTableData) }, 3000), },
如果不希望在调用 `obtainAList()` 函数时触发 `watch` 中的 `selectors`,可以将 `selectors` 改为计算属性(computed property),然后在 `obtainAList()` 函数中修改计算属性 `selectors` 的值。这样在修改 `selectors` 的值时不会触发 `watch`,只有在计算属性的值被其他代码使用时才会触发计算属性的 getter 函数。
示例代码如下:
```
watch: {
// 将 selectors 改为计算属性
selectors: function() {
// debounce 函数中的代码移到这里
this.calendarComponentUp();
console.log(this.timeArray);
this.uploaded();
console.log(this.selectors);
this.dutyTableData = this.transferStation.filter(item => item.alarmWeekDay == this.week);
console.log(this.dutyTableData);
}
},
methods: {
obtainAList() {
// 修改计算属性 selectors 的值
this.selectors = new Date().getTime();
}
},
computed: {
// 计算属性 selectors
selectors: {
get() {
return this._selectors;
},
set(val) {
this._selectors = val;
}
}
}
```
在这个示例代码中,`selectors` 被改为计算属性,并且定义了一个 `_selectors` 变量来存储 `selectors` 的实际值。在 `watch` 中,只要 `_selectors` 发生改变,就会触发计算属性的 getter 函数,从而执行 debounce 函数中的代码。在 `obtainAList()` 函数中,只需要修改 `_selectors` 的值即可,不会触发 `watch` 中的代码。
以下代码改为生序排列 JSONArray timeArray = JSONArray.parseArray(timeJson); list.add("TestCycle="+fileInfo.getTestCycle()); list.add("Tester="+fileInfo.getTestOwner()); list.add("TestType="+fileInfo.getTestType()); List<ThirdTimeParam> timeList = timeArray.toJavaList(ThirdTimeParam.class); Collections.sort(timeList);
可以将代码改为降序排列,只需要在最后一行加上一个参数即可,修改后的代码如下:
```
JSONArray timeArray = JSONArray.parseArray(timeJson);
list.add("TestCycle="+fileInfo.getTestCycle());
list.add("Tester="+fileInfo.getTestOwner());
list.add("TestType="+fileInfo.getTestType());
List<ThirdTimeParam> timeList = timeArray.toJavaList(ThirdTimeParam.class);
Collections.sort(timeList, Collections.reverseOrder());
```
这样,`timeList` 就会按照时间的降序排列。如果想要按照其他方式排序,可以实现 `Comparator` 接口,并传入 `Collections.sort()` 方法中。