Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在对象中的对象数组中查找属性的最大值_Javascript_Arrays_Object - Fatal编程技术网

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}

我有一个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},{“值”: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上使用了