【问题标题】:Javascript How to group data by similar valuesJavascript如何按相似值对数据进行分组
【发布时间】:2022-08-10 00:05:28
【问题描述】:

假设我有一些这样的数据:

[ {...otherData, coordinates: {x: 2022, y: 149832}}, {...otherData, coordinates: {x: 2023, y: 153729}}, {...otherData, coordinates: {x: 2024, y: 156800}}, {...otherData, coordinates: {x: 2024, y: 195233}}, {...otherData, coordinates: {x: 2035, y: 341978}} ]

我想使用 x 和 y 键将最相似的值组合在一起。输出看起来像这样:

[ [{...otherData, coordinates: {x: 2022, y: 149832}}, {...otherData, coordinates: {x: 2023, y: 153729}}, {...otherData, coordinates: {x: 2024, y: 156800}}], [ {...otherData, coordinates: {x: 2024, y: 195233}}, {...otherData, coordinates: {x: 2035, y: 341978}}] ]

返回的数组将包含嵌套数组,每个数组都包含分组数据,最后一个数组包含无法分组的数据。

要设置相似的范围,假设 x 值必须彼此相差 1 年。如果该检查通过,则后续检查是针对 y 值。它们之间的距离必须在 10,000 以内。我曾考虑过为此使用reduce,但老实说,我一直对逻辑的样子一无所知。

给好奇的人解释一下:

这背后的目的是最终我将在散点图上使用它们。问题是传入的数据将具有最终重叠在点簇中的点。而不是一个集群,我希望聚合相似的数据值,并在这些组中,选择具有最低 y 值的那个,并将其绘制到图表上。当您点击该绘图点时,将出现一个包含该组剩余值的小图形。

    标签: javascript typescript lodash


    【解决方案1】:

    我在使用 C# 时喜欢的一件事是 LINQ - 能够在不使用数据库的情况下查询其他数据集。

    我知道我们在这里使用javascript,而且 - 希望我们都明白,作为一个经验法则 - 对大型数据集的查询应该通过数据库处理(首选基于 SQL 的)

    话虽如此 - javascript 也有很多 LINQ 库,如果您决定要在客户端(例如)操作游览查询 - 您也可以使用其中一个库(亲自,我在几个项目中使用了this one

    好处:

    • 节省资源并将负载从您的数据库/后端服务转移到您的客户端(如果您的数据相对较小并且不会从后到前使您的流量过载)
    • 您可以使用LINQ 资源来简化您的开发(它几乎就像复制粘贴一样简单,只需稍作调整)
    • 进行快速数据转换 - 改进用户体验

    这是一个帮助您入门的快速示例:

    const data = [ { coordinates: {x: 2022, y: 149832}}, {coordinates: {x: 2022, y: 153729}}, {coordinates: {x: 2024, y: 156800}}, { coordinates: {x: 2024, y: 195233}}, {coordinates: {x: 2035, y: 341978}} ]
    
    const groupByResults = Enumerable.from(data).groupBy(item => item.coordinates.x).toArray()
    
    const group = groupByResults[0] // this is for demonstration purposes only
    console.log(group.key(), group.getSource())
    

    【讨论】:

      猜你喜欢
      • 2022-01-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多