Javascript 在对象数组中查找属性的最大值并返回整个对象

Javascript 在对象数组中查找属性的最大值并返回整个对象,javascript,Javascript,我知道这里也有人问过类似的问题:,但使用该方法无法返回包含最大值的整个对象 我有一组对象: [ {Prop: "something", value: 2}, {Prop: "something_else", value: 5}, {Prop: "bla", value: 3} ] 我想找到属性“value”上的最大值,然后返回整个对象 {Prop: "something_else", value: 5} 在javascript中最简单的方法是什么?试试以下方法: array.slice

我知道这里也有人问过类似的问题:,但使用该方法无法返回包含最大值的整个对象

我有一组对象:

[
 {Prop: "something", value: 2},
 {Prop: "something_else", value: 5},
 {Prop: "bla", value: 3}
]
我想找到属性“value”上的最大值,然后返回整个对象

{Prop: "something_else", value: 5}
在javascript中最简单的方法是什么?

试试以下方法:

array.slice().sort(function(a, b) { return a.value < b.value; })[0];
array.slice().sort(函数(a,b){返回a.value

slice
克隆阵列)

也可以使用类似array.prototype.reduce的东西

i、 e


编辑:如果您想要一种基本的方法,只需在数组中进行迭代,就可以执行以下操作:

function maxVal(arr) {
    var max = arr[0];
    for (var i = 1, iMax = arr.length; i < iMax; i++) {
        if (max.value < arr[i].value) {
            max = arr[i];
        }
    }
    return max;
}
函数maxVal(arr){
var max=arr[0];
对于(变量i=1,iMax=arr.length;i
如果A是对象数组

function return_Max_Object(A)
{
 var M = -Infinity;
 var Max_index = -1;
 for(var i =0;i<A.length;i++)
 {
  if(A[i].value>M) 
  {
    M = A[i].value;
    Max_index = i;
  }
 }
 return A[Max_index];
}
函数返回\u Max\u对象(A)
{
var M=-无穷大;
var Max_指数=-1;
对于(变量i=0;iM)
{
M=A[i]。数值;
最大指数=i;
}
}
返回一个[最大索引];
}
函数getMaxByVal(objArr){
var max=objArr[0][“值”];
var indexStore=0;
var i=0;

对于(len=objArr.length;i最简单的方法是使用。我们可以用所需的最少步骤来处理此问题,如果当前元素的值大于上一个值,只需替换上一个值:

const objs=[
{Prop:“某物”,value:2},
{Prop:“其他东西”,值:5},
{Prop:“bla”,值:3}
];
常量maxObj=objs.reduce((p,c)=>p.value>c.value?p:c);

console.log(maxObj)
只是循环数组。这还不够。否则我会这样做。为什么还不够?更好:我不知道如何在循环中找到最大值并跟踪对象。哦,看我的答案,这是最简单的方法,循环元素并跟踪最大值并返回该对象。第一种方法有效。简单的方法没有任何问题t、 没有“值”的痕迹。无论如何,谢谢。如果你最后删除[“值”]也可以。我想要整个对象。
function return_Max_Object(A)
{
 var M = -Infinity;
 var Max_index = -1;
 for(var i =0;i<A.length;i++)
 {
  if(A[i].value>M) 
  {
    M = A[i].value;
    Max_index = i;
  }
 }
 return A[Max_index];
}
function getMaxByVal(objArr){
    var max=objArr[0]["value"];
    var indexStore=0;
    var  i=0;
    for(len=objArr.length; i<len;i++){
        if(max < objArr[i]["value"]){
            max=objArr[i]["value"];
            indexStore=i;
        }
    }
    return objArr[indexStore]["value"]
}