js 数组合并问题
业务描述，在日历上显示一个月跑步的日期
日历这快完全是用前端js实现的，所以只需要后台给一个跑步日期的数组插进日历的数组里就行了，我的思路是做两层循环，但是这样计算量很大，有没有更好的方法？
后台返回一个月中跑步的日期
```
[1,4,6,8,21]
```
前端某月 日历数组
```
[{day:1},{day:2}......{day:31}]

```
希望合并的最后的结果是
```
[{day:1,isrun:false},{day:2,isrun:false}...{day:4,isrun:true}...{day:6,isrun:true}....{day:31,isrun:false}]
```
 首先，反对推荐答案，indexOf只是语法糖，内部还是循环 
如果这样做，我想了很久，没有想到什么好办法，
但是上面的答案也绝对不对，你想下map、indexOf、include这些方法内部原理是不是还是循环？
只是被封装的很好，使你的代码看起来很优雅。
那么，我们换个思路
```
let days = [2, 4, 5, 7];
let run = [{ day: 1 }, { day: 2 }......{ day: 31 }];
for(let i=0;i<days.length;i++){
  run[days[i]-1].isrun=true;
}
```
run数组里的下标是可以利用起来的，实际天数-1就是下标
写之前没注意看 我赞同 @yszou 的答案，只有这样才能实现单层循环，其他的全是语法糖包装，实质运算量并没有减少