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

Get Maximum value from JSON object using javascript?

本文关键字:获取 最大值 对象 JSON javascript 使用      更新时间:2023-09-26

我有JSON,像

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

我需要这个JSON的最大值…如果返回键和列索引

则返回800

因为这是标记在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>

希望这对你有帮助!

你可以这样做

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);

您可以使它或多或少通用-并且可能将其缩短为单个reduce语句。

var data = [
  {a:"A1",b:100,c:800},
  {a:"B1",b:300,c:400}
];
data
  .reduce(function(acc, x, i) {
    if (x.b > x.c) {
        return acc.concat({key: 'b', value: x.b });
    }
    return acc.concat({key: 'c', value: x.c });
  }, [])
  .reduce(function(acc, x, i) {
    if (x.value > acc.value) {
      return {
        key: x.key,
        value: x.value,
        index: i
      };
    }
    return acc;
  }, {key: '', value: Number.MIN_VALUE, index: -1});

如果您正在使用lodash或underscore之类的库,您可以简单地执行:

_.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);