【问题标题】:Finding min and max values of an array of arrays using D3.JS not plain Javascript [duplicate]使用 D3.JS 查找数组的最小值和最大值,而不是普通的 Javascript [重复]
【发布时间】:2014-05-28 22:51:34
【问题描述】:

我有一个数组,如下所示:

series = [ [ { "x":2013-01-01, "y":100 }, { "x":2013-01-02, "y":300 } ...],
           [ { "x":2013-01-01, "y":1000 }, { "x":2013-01-02, "y":300 } ...],...
         ]

如何使用 d3 获取“x”和“y”的最小值和最大值?

我知道对于像下面这样的单个数组:

miniseries = [ { "x":2013-01-01, "y":100 }, { "x":2013-01-02, "y":300 } ...]

例如,我会使用以下句子:

minX = d3.min(miniseries, function(d){return d.x});

但不确定如何处理数组而不是单个数组。

【问题讨论】:

  • @LarsKotthoff :我的问题是 D3.JS 问题,我对 JavaScript 答案不感兴趣。 “如何在 javascript 中找到嵌套数组的最大值/最小值?”这个问题具有误导性,因为根本没有提到 D3.JS(我同意后面的细节中确实提到了 D3)。我认为应该重新措辞,以便用户可以通过阅读 D3.JS 问题/解决方案而不是 JavaScript 问题来理解
  • 随时建议对问题进行修改。它被标记为 D3。

标签: javascript arrays d3.js


【解决方案1】:
var minX = d3.min(series, function (ms) {
    return d3.min(ms, function (d) {
        return d.y
    })
});

【讨论】:

    【解决方案2】:

    只需遍历数据数组并将值存储在两个数组中(每个轴一个)。然后你可以得到两个轴的最小值/最大值如下:

    查找最小/最大日期(x 轴):

    // sample data
    var dates = [ 
        new Date("2013-01-01"),
        new Date("2013-02-01"),
        new Date("2013-03-01")
    ];
    
    var minDate = new Date(Math.min.apply(null, dates));
    var maxDate = new Date(Math.max.apply(null, dates));
    

    查找最小值/最大值(y 轴):

    // sample data
    var valuesAxisY = [100, 300, 400, 50];
    
    var min = Math.min.apply(null, valuesAxisY),
    var max = Math.max.apply(null, valuesAxisY);
    

    【讨论】:

    • 由于与我的问题无关,我在示例中未描述的其他键和值的 JSON 调用导致我得到该系列。所以我宁愿按原样使用系列数组。更重要的是,我正在学习 D3.JS,想知道如何使用 d3.js 而不是纯 JavaScript。
    猜你喜欢
    • 1970-01-01
    • 2021-09-15
    • 2017-09-20
    • 2016-06-06
    • 1970-01-01
    • 2021-06-17
    • 2010-09-18
    • 2017-12-23
    • 2014-06-11
    相关资源
    最近更新 更多