首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在JavaScript/HTML中访问JSON数组中的min和max

在JavaScript/HTML中访问JSON数组中的min和max
EN

Stack Overflow用户
提问于 2017-04-01 18:18:32
回答 3查看 2.4K关注 0票数 0

下面的代码从数据库中获取数据,并使用HTML和FusionCharts库绘制图表。我只是在图形格式上遇到了一些问题。我希望yAxisMin值低于data数组中的最小值10个,yAxisMax值高于10个值。

代码语言:javascript
运行
复制
function createJSON(name, data){
    return(
        {
            "chart": {
                "caption": String(name),
                "subCaption": "15-Day Prices",
                "xAxisName": "Day",
                "yAxisName": "Price (USD)",
                "anchorRadius": "1",
                "showValues": "0",
                "borderThickness": "3",
                "yAxisMinValue": data.value.min() - 10,
                "yAxisMaxValue": data.value.max() + 10,
                "theme": "fint"
            },
            "data": data,
        }
    );
}

//I'm including this for context. This is the function that returns the data array
var getHistory = function(req,res,next){

    var data = [];
    History.findOne({"Symbol": String(req.params.sym)}, function(err, foundHistory){
        if(foundHistory){
            (foundHistory.Historical).forEach(function(day){
                data.push({
                    "label": day.Date,
                    "value": day.Close
                });
            });
            res.json(createJSON(foundHistory.Name, data));
            next();
        }
        else{
            next();
        }
    }); 
};


module.exports = getHistory;

其他一切都很好。我只需要两行代码的帮助:

代码语言:javascript
运行
复制
"yAxisMinValue": data.value.min() - 10,
"yAxisMaxValue": data.value.max() + 10,

我该怎么做?这是我的尝试,但没有编译。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-04-01 18:35:50

这个怎么样?由于您的代码示例不完整,我无法亲自测试它。

代码语言:javascript
运行
复制
function createJSON(name, data){
  var min = Number.MAX_SAFE_INTEGER;
  var max = Number.MIN_SAFE_INTEGER;
  for(var i = 0; i < data.length; i++) {
    if(data[i].value < min) min = data[i].value;
    if(data[i].value > max) max = data[i].value;
  }
  ...
      "yAxisMinValue": min - 10,
      "yAxisMaxValue": max + 10,
  ...
票数 1
EN

Stack Overflow用户

发布于 2017-04-01 18:27:14

试着做这样的事:

代码语言:javascript
运行
复制
  "yAxisMinValue": getMinValue(data) - 10,
    "yAxisMaxValue": getMaxValue(data) + 10,   


 function getMinValue(data)
     {
       var min = Number.MAX_VALUE;
        for (var key in data)
         {
           if(data[key].value < min)
            {
               min = data[key].value;
            }
         }
        return min;
     }


 function getMaxValue(data)
     {
       var max = Number.MIN_VALUE;
        for (var key in data)
         {
           if(data[key].value > max)
            {
               max = data[key].value;
            }
         }
        return max;
     }
票数 0
EN

Stack Overflow用户

发布于 2017-04-01 18:27:57

一维数列的

JavaScript的Math.maxMath.min将分别找到它们的参数的最大值或最小值,因此,使用apply调用,我们可以将数字数组应用于这些函数。

代码语言:javascript
运行
复制
var values = [ 1, 2, 3, 4, 5 ]
Math.max.apply(null, values) // 5
Math.min.apply(null, values) // 1

用于其他任何事情:

如果需要最大值的索引或正在比较非数字值,则需要自定义迭代器。

代码语言:javascript
运行
复制
function getMax (values) 
  var maxIndex = -1
  var max = Number.MIN_VALUE // use Number.MAX_VALUE for min

  for (var i = 0; i < values.length; i++) {
    if (value[i] > max) { // do your "greater than" comparison here
      maxIndex = i
      max = value[i]
    }
  }

  // return what it is you need, max or maxIndex
  return max
end 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43160396

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档