数组中的最大值(值是数组对象中的属性)

highest value in array (value is attribute in array object)

本文关键字:数组 属性 对象 最大值      更新时间:2023-09-26

我有一个对象数组,一个对象的例子是:

$scope.object = {
    Title: 'object1',
    Description: 'lorem ipsum',
    Value: 123
};

所以我的数组将由几个具有这些属性的对象组成,如何在我的数组中找到具有最高"值"的对象?

我已经研究了其他问题,比如这样,但它们是关于包含纯值的数组,而不是对象。

我真正想要的是在我的 html 中找到具有最高值的对象,也许使用 angular $filter,如下所示:

ng-repeat="item in objectArray | filter: filterHere "

但它也可以与函数一起使用,现在我是这样做的,但我根本不喜欢这个解决方案:

var value = 0;
angular.forEach($scope.objectArray, function(object){
    if(object.Value > value){
        value = object.Value;
        $scope.itemToSeeInView = object;
    }
});

因此,如果对象的值大于要在视图中查看的var value项设置为该对象,如果视图中的$filter不起作用,是否可以改进此功能?

如果只想显示数组中的最小值/最大值,则可以使用 orderby 筛选器,并将其与 limitTo 筛选器组合。 这看起来像:

<tr ng-repeat="p in vm.persons | orderBy:'someValue' |limitTo:1" >

或者在你自己的例子的情况下

ng-repeat="item in objectArray | orderBy:'Value': true | limitTo:1"

我创建了一个小的 plnkr,所以你可以看到它的实际效果。plunk是我上面描述的扩展版本,让我们切换一些内容。如果我投入太多,请给我留言。我会相应地清理它。

您可以使用内置的排序方法

$scope.objectArray.sort(function(a,b) { return a.Value < b.Value})[0]

恐怕您可以使用$filter获得优化的解决方案,但这是快速解决方案。

$scope.friends = [
    {name:'John', age:25},
    {name:'Mary',  age:35},
    {name:'Mike', age:18},
    {name:'Adam', age:35},
    {name:'Julie', age:23}
 ];
var arr = [];
angular.forEach($scope.friends, function(item) {
  arr.push(item["age"]);
});
$scope.result = arr.sort().reverse()[0]; // Highest value.

杰斯菲德尔演示

当您使用 ES6(带有转译器)时,您可以使用以下代码:

const friends = [
    {name:'John', age:25},
    {name:'Mary',  age:35},
    {name:'Mike', age:18},
    {name:'Adam', age:35},
    {name:'Julie', age:23}
];
const maxObject = friends.find(friend => !friends.some(item => item.age > friend.age));