我有一个对象数组,一个对象的例子是:
$scope.object = {
Title: 'object1',
Description: 'lorem ipsum',
Value: 123
};
所以我的数组将包含几个具有这些属性的对象,如何在我的数组中找到具有最高'value'的对象?
我已经研究了其他问题like this,但它们是关于数组中包含纯值的数组,而不是对象。
我真正想要的是在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不起作用,是否可以改进此函数?
答案 0 :(得分:2)
您可以使用内置排序方法
$scope.objectArray.sort(function(a,b) { return a.Value < b.Value})[0]
答案 1 :(得分:2)
如果只想显示数组中的最小值/最大值,可以使用orderby过滤器,并将其与limitTo过滤器结合使用。这看起来像是:
<tr ng-repeat="p in vm.persons | orderBy:'someValue' |limitTo:1" >
或在你自己的例子中
ng-repeat="item in objectArray | orderBy:'Value': true | limitTo:1"
我创建了a small plnkr,因此您可以看到这一点。插件是我上面描述的扩展版本,让你切换一些东西。 如果我投入太多,请给我留言。我会相应地清理它。
答案 2 :(得分: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.
答案 3 :(得分:0)
当您使用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));