javascript - Angular(Javascript)如何使用地图和过滤器为可观察数组过滤日期时间并返回新的相似对象数组
问题描述
如您所见,它是一个包含 4 个类似文档的数组,每个文档都有
{name:"...", series: [{name:"...",value:"..."},...]}
作为它的结构。现在,我想基于这个数组创建一个新数组,根据我从函数传递的一些日期时间参数(将是精确,来自日期时间选择器)。
filterDatetime(start, end, array) {
this.actualData = array.map(el => el.series)
.filter(dok => {new Date(dok.name) > new Date(start) && new Date(dok.name) < new Date(end)})
}
我尝试应用上述函数来过滤开始和结束日期时间的系列数组,以返回与图片中类似的文档结构,只是使用新的过滤系列数组......但不知何故这不起作用。
此外,我正在使用 observables。我将返回的可观察数据保存在一个变量中,当页面加载时,该变量应该已经存在于图表中,因此,如果您使用 datetimepicker 选择日期范围,则该变量处的数据通常应该已经存在。
但是,我不确定如果它来自可观察对象(如果它已经存在),它将如何表现。所以也许我必须小心不要返回一个空数组左右(我对可观察对象还是新手,所以不知道这是否像那样工作)。
编辑:我可以向数据库发送一个新的 http 请求并直接对数据进行过滤,但我想学习那些 map/filter/reduce 等方法来直接使用当前数据进行操作,因为我认为这将是在后期开发阶段更方便。
解决方案
您可能应该在您现在进行 http GET 请求的地方进行过滤。
private theSubject = new BehaviorSubject<>();
this.data = this.httpGetRequest()
.pipe(
filter(dok => {new Date(dok.name) > new Date(start) && new Date(dok.name) < new Date(end)}),
toArray()
)
.subscribe((dok: any) =>
this.theSubject.next(dok),
);
推荐阅读
- postgresql - 触发重塑电话号码
- phpspreadsheet - PHPSpreadsheet 会将 xls 转换为 xlsx 并保留格式吗?
- laravel - 无法从 Laravel 视图中的命名错误包中访问数据
- css - 如何在屏幕调整大小时使用 CSS 防止 DIV 重叠?
- java - 从 List、stream、Java 8 创建具有嵌套属性的嵌套映射
- ios - UICollectionView 在再次触发 reloadData() 时发现 nil
- python - Flask 没有在 DATABASE 中插入值
- node.js - Gulp:程序的异常行为
- c - Winsock Server 使用 WinAPI 线程重置第一个连接
- angular - 使用 NPM 为 Angular 构建 Docker 映像