JavaScript:从数组中查找具有最高总和值的对象
需要myArray中具有最大a+b值的对象JavaScript:从数组中查找具有最高总和值的对象,javascript,arrays,object,array-map,Javascript,Arrays,Object,Array Map,需要myArray中具有最大a+b值的对象 var myArray=[{a:5,b:10},{a:10,b:7},{a:8,b:5}]; 现在我有一些东西可以返回索引: var max=[],maxIndex; myArray.map(x=>max.push(x.a+x.b)) maxIndex=max.indexOf(Math.max.apply(Math,max)) 到目前为止,我需要返回对象而不是其索引的东西 var maxObject=myArray.map(x=>x.a+x.b).
var myArray=[{a:5,b:10},{a:10,b:7},{a:8,b:5}];
现在我有一些东西可以返回索引:
var max=[],maxIndex;
myArray.map(x=>max.push(x.a+x.b))
maxIndex=max.indexOf(Math.max.apply(Math,max))
到目前为止,我需要返回对象而不是其索引的东西
var maxObject=myArray.map(x=>x.a+x.b).reduce((x,y)=>x>y)
返回
false
您可以尝试以下操作:
让myArray=[{a:5,b:10},{a:10,b:7},{a:8,b:5}];
设max=myArray[0].a+myArray[0].b;
让maxObject={…myArray[0]};
myArray.map((obj)=>{
如果(最大值<目标a+目标b){
最大值=对象a+对象b;
maxObject={…obj}
}
});
console.log(maxObject);//{a:10,b:7}
你可以试试这样的东西:
让myArray=[{a:5,b:10},{a:10,b:7},{a:8,b:5}];
设max=myArray[0].a+myArray[0].b;
让maxObject={…myArray[0]};
myArray.map((obj)=>{
如果(最大值<目标a+目标b){
最大值=对象a+对象b;
maxObject={…obj}
}
});
console.log(maxObject);//{a:10,b:7}
你可以像下面那样使用reduce
var myArray=[{a:5,b:10},{a:10,b:7},{a:8,b:5}];
const finalResult=myArray.reduce((结果,对象)=>{
设总和=obj.a+obj.b;
如果(result.sum console.log(finalResult.obj)
您可以像下面这样使用reduce
var myArray=[{a:5,b:10},{a:10,b:7},{a:8,b:5}];
const finalResult=myArray.reduce((结果,对象)=>{
设总和=obj.a+obj.b;
如果(result.sum console.log(finalResult.obj)
在找到具有最高总和值的对象索引后,基于您的代码
,只需返回该索引中的数组:
var myArray=[{a:5,b:10},{a:10,b:7},{a:8,b:5}];
var max=[],
最大索引;
var结果;
myArray.map(x=>max.push(x.a+x.b))
maxIndex=max.indexOf(Math.max.apply(Math,max))
结果=myArray[maxIndex];
控制台日志(结果)代码>在找到具有最高总和值的对象索引后,基于您的代码
,只需返回该索引中的数组:
var myArray=[{a:5,b:10},{a:10,b:7},{a:8,b:5}];
var max=[],
最大索引;
var结果;
myArray.map(x=>max.push(x.a+x.b))
maxIndex=max.indexOf(Math.max.apply(Math,max))
结果=myArray[maxIndex];
控制台日志(结果)代码>无需映射,因为reduce将覆盖您的阵列
var myArray = [{a:5,b:10},{a:10,b:7},{a:8,b:5}];
var biggestSumObj = myArray.reduce((total,current)=>{
if((current.a + current.b) > (total.a + total.b)){
return current;
}
return total;
});
console.log(biggestSumObj);
小提琴:不需要地图,因为reduce将覆盖你的阵列
var myArray = [{a:5,b:10},{a:10,b:7},{a:8,b:5}];
var biggestSumObj = myArray.reduce((total,current)=>{
if((current.a + current.b) > (total.a + total.b)){
return current;
}
return total;
});
console.log(biggestSumObj);
fiddle:如果你能得到索引,那么你就可以用myArray[maxIndex]得到对象。
true,如果可能的话,我想要更高效、更短的东西,但对数组不太了解。现在减少myArray.reduce((x,y)=>x.a+x.b>y.a+y.b?x:y)
–您需要返回x
或y
,而不是比较中的布尔值,如果减少和数组,则得到的是最高和,而不是对象。谢谢,这就是我要找的。如果您可以得到索引,则可以使用myArray[maxIndex]
true获得对象,如果可能的话,我想要更高效、更短的东西,但还不太了解数组。reduce
。myArray.reduce((x,y)=>x.a+x.b>y.a+y.b?x:y)
–您需要返回x
或y
,而不是从比较中返回布尔值,如果你减少和的数组,你得到的是最高的和,而不是对象。谢谢,这就是我想要的。