javascript - 从数组中查找最近的时间
问题描述
我有一个看起来像这样的对象数组
var OGArray = [
{ time: '16:33:53', import_today: '1.10' },
{ time: '16:28:20', import_today: '1.10' },
{ time: '16:23:07', import_today: '1.10' }]
时间自动从 API 更新。我也有一个看起来像这样的数组
var timeArray = ['16:00:00', '16:30:00', '17:00:00', '17:30:00']
我希望能够查看 timeArray[0] 并从 OGArray.time 中找到最接近的时间匹配,然后提取 import_today 是什么
解决方案
这只是一个循环,您可以计算更接近的时间并存储它。选择较少的那个。
下面不是最有效的代码,但它可以工作。
var OGArray = [
{ time: '16:33:53', import_today: '1.10' },
{ time: '16:28:20', import_today: '1.10' },
{ time: '16:23:07', import_today: '1.10' }]
var timeArray = ['16:00:00', '16:30:00', '17:00:00', '17:30:00']
var closestArray = timeArray.map(t => {
const ts = new Date(`01/01/2022 ${t}`);
return OGArray.reduce((closest, item) => {
const dC = Math.abs(new Date(`01/01/2022 ${closest.time}`) - ts);
const dI = Math.abs(new Date(`01/01/2022 ${item.time}`) - ts);
return dC < dI ? closest : item;
});
})
console.log(closestArray);
推荐阅读
- c++ - Catch2 - output to console and file
- java - OpenJDK 源代码中的 Java 代码风格或并发问题
- html - Bootstrap 4 导航栏切换器显示菜单项但不展开导航栏
- amazon-web-services - CloudFormation 模板中的 Lambda 资源报告 CodeUri 无效
- flutter - 有没有办法在 Flutter Web 中创建一个永久的侧边栏?
- python - 如何在 scikit 中使用具有半正弦距离的 DistanceMetrix.pairwise()
- python - 为什么这个 json 数据不会加载?
- java - VSCode 找不到单元测试
- bash - 使用 (scp | rsync) 在创建文件夹结构的同时提取特定文件?
- python - 我想将 while 循环函数添加到我的代码中