使用javascript从JSON对象获取最大值?

时间:2015-10-15 05:52:01

标签: javascript jquery d3.js

我有像JSON一样的

var JObject = [
     {
        a:"A1",
        b:100,
        c:800
     },
     {
       a:"B1",
       b:300, 
       c:400
      } 
  ];

我需要来自此JSON的最大值...如果返回键和列索引

,则必须返回800

4 个答案:

答案 0 :(得分:1)

因为这是在d3中标记的。 我会给出一个d3答案。

下面的工作代码

var kary = [
     {
        a:"A1",
        b:100,
        c:800
     },
     {
       a:"B1",
       b:1300, 
       c:400
      },
       {
       a:"D1",
       b:300, 
       c:400
      } 

  ];

var max = d3.max(kary, function(d){ return d3.max(d3.values(d).filter(function(d1){ return !isNaN(d1)}))});

console.log(max)
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.4.11/d3.min.js"></script>

希望这有帮助!

答案 1 :(得分:0)

你可以做这样的事情

var JObject = [{
  a: "A1",
  b: 100,
  c: 800
}, {
  a: "B1",
  b: 300,
  c: 400
}];

var res = Math.max.apply(null,JObject.map(function(v) { 
// iterate over array element and getting max value from result array 
  
  var r = [];
  for (var val in v) {
  // iterate over object inside array
    if (v.hasOwnProperty(val)) {
      var num = parseInt(v[val], 10);
      // parsing the value for integer output
      r.push(isNaN(num) ? 0 : num);
      // pushing  value to array, in case of `Nan` pushing it as 0
    }
  }
  return Math.max.apply(null,r);
  // getting max value from object values
}));

console.log(res);

答案 2 :(得分:0)

你可以使这或多或少是通用的 - 并且可能将它缩短为单个reduce语句。

#ifndef NDEBUG
  fprintf(stderr, "My trace message\n");
#endif

答案 3 :(得分:0)

如果您使用的是像lodash或下划线这样的库,您只需执行以下操作:

_.max(_.map(JObject, function(a){
  return _.max(_.values(a));
}));

您也可以使用reduce:

解决它

_.reduce(JObject, function(val, a){ return _.max(_.values(a)) > val ? _.max(_.values(a)) : val; },0);