node.js - MongoDB - 营业时间,按当天排序
问题描述
我正在尝试重新创建位置列表上显示的 Google“营业时间”下拉菜单。
营业时间数组如下所示:
[
{id: 5d991d1208ac396803a992ee, day: 'sunday', open: 560, close: 1050},
{id: 5d991d1208ac396803a992ef, day: 'monday', open: 560, close: 1050},
{id: 5d991d1208ac396803a992eg, day: 'tuesday', open: 560, close: 1050},
{id: 45d991d1208ac396803a992e, day: 'wednesday', open: 560, close: 1050},
{id: 5d991d1208ac396803a992eh, day: 'thursday', open: 560, close: 1050},
{id: 5d991d1208ac396803a992eI, day: 'friday', open: 560, close: 1050},
{id: 5d991d1208ac396803a992eG, day: 'saturday', open: 560, close: 1050},
]
所以,如果当天是星期二,我想返回一个这样的排序数组:
[
{id: 5d991d1208ac396803a992eg, day: 'tuesday', open: 560, close: 1050},
{id: 45d991d1208ac396803a992e, day: 'wednesday', open: 560, close: 1050},
....
]
我正在使用猫鼬和 MongoDB。
更新 ID 是由 MongoDB 生成的,所以我无法对它们进行排序或匹配。
解决方案
使用扩展运算符切片和连接:
// needs the day of the week
// starting from Sunday as 0 and saturday as 6 since getDay()
// starts from 0
const currentDay = new Date().getDay() // 0, 1, 2, 3, 4, 5, or 6
// here's your function
const getSortedArray = (arr) => [
...arr.slice(currentDay),
...arr.slice(0, currentDay)
]
// example
const days = [{
id: '5d991d1208ac396803a992ee',
day: 'sunday',
open: 560,
close: 1050
},
{
id: '5d991d1208ac396803a992ef',
day: 'monday',
open: 560,
close: 1050
},
{
id: '5d991d1208ac396803a992eg',
day: 'tuesday',
open: 560,
close: 1050
},
{
id: '45d991d1208ac396803a992e',
day: 'wednesday',
open: 560,
close: 1050
},
{
id: '5d991d1208ac396803a992eh',
day: 'thursday',
open: 560,
close: 1050
},
{
id: '5d991d1208ac396803a992eI',
day: 'friday',
open: 560,
close: 1050
},
{
id: '5d991d1208ac396803a992eG',
day: 'saturday',
open: 560,
close: 1050
},
]
// ensure order of days
const daysSorted = ['sunday', 'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday']
.map(day => days.filter(el => el.day === day)[0])
console.log(getSortedArray(daysSorted))
推荐阅读
- javascript - p1.movement is not a function
- android - 如何设计从firebase中提取的数据
- python - 抓取图像并仅保存选定的图像
- python-3.x - 如何在 python 3 中将 .png 文件附加到 .csv 文件中?
- android - 错误 ionic cordova build --release android
- android - Android - 如何使每个 TableRow 适合屏幕高度
- c++ - 在特定分隔符后连接标记?
- arrays - 已知长度数据的切片 vs 数组
- python - DatabaseError:sql执行失败:没有这样的表:League
- nativescript - Nativescript Carousel 控件不起作用