我喜欢JSON使用javascript从JSON对象获取最大值?
var JObject = [
{
a:"A1",
b:100,
c:800
},
{
a:"B1",
b:300,
c:400
}
];
我需要从这个JSON最大值...它必须返回800,如果它返回键和列索引
我喜欢JSON使用javascript从JSON对象获取最大值?
var JObject = [
{
a:"A1",
b:100,
c:800
},
{
a:"B1",
b:300,
c:400
}
];
我需要从这个JSON最大值...它必须返回800,如果它返回键和列索引
你可以做这样的事情
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);
其工作正常...谢谢:) –
你能做出这样或多或少通用的 - 可能缩短它变成一个唱减少陈述。
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库或下划线,你可以简单地做:
_.max(_.map(JObject, function(a){
return _.max(_.values(a));
}));
您也可以解决它与降低:
_.reduce(JObject, function(val, a){ return _.max(_.values(a)) > val ? _.max(_.values(a)) : val; },0);
由于这是标记在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>
希望这有助于代码!
这不是JSON !.你只是有一个对象 –
除了这不是一个'JSON'对象 - 为什么不在迭代中保持一个变量'max'? –