Javascript 在对象中的对象数组中查找属性的最大值
我有一个JavaScript对象,希望获得所有条目中的最高值。 我试过这个:Javascript 在对象中的对象数组中查找属性的最大值,javascript,arrays,object,Javascript,Arrays,Object,我有一个JavaScript对象,希望获得所有条目中的最高值。 我试过这个: d={ “A”:[{“值”:10},{“值”:20},{“值”:30}], “B”:[{“值”:50},{“值”:60},{“值”:1000}], } 对象。键(d)。映射( 函数(k){ Math.max.apply(Math,d[k].map( 职能(e){ console.log(值); } )) } )使用对象.值,平面图和数学.max进行扩展 const d={“A”:[{“值”:10},{“值”:20}
d={
“A”:[{“值”:10},{“值”:20},{“值”:30}],
“B”:[{“值”:50},{“值”:60},{“值”:1000}],
}
对象。键(d)。映射(
函数(k){
Math.max.apply(Math,d[k].map(
职能(e){
console.log(值);
}
))
}
)
使用对象.值
,平面图
和数学.max
进行扩展
const d={“A”:[{“值”:10},{“值”:20},{“值”:30}],“B”:[{“值”:50},{“值”:60},{“值”:1000}];
const res=Math.max(…Object.values(d).flat().flatMap(Object.values));
控制台日志(res)
您可以在Math.max
中使用扩展语法…
,然后映射并展平数组
const d={
“A”:[{“值”:10},{“值”:20},{“值”:30}],
“B”:[{“值”:50},{“值”:60},{“值”:1000}],
}
const max=Math.max(…[].concat(…Object.values(d)).map(({value}=>value))
console.log(max)
如果需要es5代码,请尝试以下操作:
var d = {
"A": [ {"value": 10}, {"value": 20}, {"value": 30} ],
"B": [ {"value": 50}, {"value": 60}, {"value": 1000} ],
};
var results = [];
for(var key in d)
{
d[key].forEach(function (obj){
results.push(obj.value);
});
}
console.log(Math.max.apply(null, results));
尝试这样做,首先将值展平,然后按升序排序,并从排序的数组中取出最后一个元素:
const数据={
“A”:[{“值”:10},{“值”:20},{“值”:30}],
“B”:[{“值”:50},{“值”:60},{“值”:1000}],
};
const highestValue=Object.values(数据)
.flatMap(x=>x)
.sort((a,b)=>a.value-b.value)
.切片(-1);
console.log(最高值)代码>
d={
“A”:[{“值”:10},{“值”:20},{“值”:30}],
“B”:[{“值”:50},{“值”:60},{“值”:1000}],
}
var maxValue=Math.max.apply(null,Object.keys(d.map)(key=>Math.max.apply(null,d[key].map(x=>x.value)));
console.log(maxValue)代码>您可以使用一个好的旧循环
设d={
“A”:[{“值”:10},{“值”:20},{“值”:30}],
“B”:[{“值”:50},{“值”:60},{“值”:1000}],
}
让maxValue;
for(输入d)
{
for(设i=0,len=d[key]。长度;i由于没有polyfill,或都不受很好的支持,因此这里有一个解决方案,包括和:
const d={
“A”:[{“值”:10},{“值”:20},{“值”:30}],
“B”:[{“值”:50},{“值”:60},{“值”:1000}],
}
设r=Math.max(…Object.values(d).reduce((r,c)=>[…r,…c]).map(x=>x.value))
console.log(r)
对于实际的JSON字符串,可以在解析过程中完成:
var max=-Infinity,json='{“A”:[{“value”:10},{“value”:20},{“value”:30}],“B”:[{“value”:50},{“value”:60},{“value”:1000}]
parse(JSON,(k,v)=>max=v>max?v:max)
log(max)
只有简单地使用map和reduce并将它们链接在一起,才能获得所需的max值。
虽然我使用了下划线js,但您也可以使用简单的map和reduce方法
var d = {
"A": [ {"value": 10}, {"value": 20}, {"value": 30} ],
"B": [ {"value": 50}, {"value": 60}, {"value": 1000} ],
"C": [ {"value": 30}, {"value": 90}, {"value": 300} ],
}
var maxvalue = _.reduce(_.map(d,(items)=>{
return _.reduce(items , (p,i)=>{
return p> i.value ? p: i.value;
},0)
}) , (maxy, iter)=>{
return maxy > iter ? maxy: iter;
},0);
我有一些JSON数据不,你没有javascript对象,JSON是一个不同的东西对象。值(…)。flat不是一个函数
它在snippet@Cid中运行得很好-检查你的浏览器(flat
没有得到很好的支持)。我将添加一些更好的受支持的变体。我使用的是Firefox Quantum 60.7.0esr(32位),我使用的是Safari最新版本。非常好用。考虑到firefox的官方版本,它从62版开始就可以在firefox上使用了