Javascript 数组中的最高值(值是数组对象中的属性)
我有一个对象数组,对象的一个示例是:Javascript 数组中的最高值(值是数组对象中的属性),javascript,angularjs,Javascript,Angularjs,我有一个对象数组,对象的一个示例是: $scope.object = { Title: 'object1', Description: 'lorem ipsum', Value: 123 }; 因此,我的数组将由几个具有这些属性的对象组成,如何在数组中找到“值”最高的对象 我已经研究了其他问题,但它们是关于数组中包含纯值的,而不是对象 我真正想要的是在我的html中找到具有最高值的对象,也许可以使用以下内容: ng-repeat="item in objectArray
$scope.object = {
Title: 'object1',
Description: 'lorem ipsum',
Value: 123
};
因此,我的数组将由几个具有这些属性的对象组成,如何在数组中找到“值”最高的对象
我已经研究了其他问题,但它们是关于数组中包含纯值的,而不是对象
我真正想要的是在我的html中找到具有最高值的对象,也许可以使用以下内容:
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值
项设置为该对象,如果视图中的$filter不起作用,该函数是否可以改进?您可以使用内置排序方法
$scope.objectArray.sort(function(a,b) { return a.Value < b.Value})[0]
$scope.objectArray.sort(函数(a,b){返回a.Value
您可以使用内置的排序方法
$scope.objectArray.sort(function(a,b) { return a.Value < b.Value})[0]
$scope.objectArray.sort(函数(a,b){返回a.Value
如果您可以使用$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.
如果您可以使用$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.
如果只想显示数组中的最小/最大值,可以使用orderby筛选器,并将其与Limito筛选器组合。这看起来像:
<tr ng-repeat="p in vm.persons | orderBy:'someValue' |limitTo:1" >
我创造了这样你就可以看到它的作用。plunk是我上面描述的扩展版本,让我们来切换一些东西。
如果我确实投入太多,给我一张便条。我会相应地清理它。如果您只想显示数组中的最小/最大值,可以使用orderby筛选器,并将其与Limito筛选器组合。这看起来像:
<tr ng-repeat="p in vm.persons | orderBy:'someValue' |limitTo:1" >
我创造了这样你就可以看到它的作用。plunk是我上面描述的扩展版本,让我们来切换一些东西。
如果我确实投入太多,给我一张便条。我将相应地进行清理。当您使用ES6(带transpiler)时,可以使用以下代码:
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));
当您使用ES6(带transpiler)时,可以使用以下代码:
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));
您希望在控制器或模板中解决此问题。两者都是可能的。我希望在模板中解决,但如果需要,可以在控制器中解决。确定,值是否始终为正?是的,它们为正(但可以为空)。最简单的方法是创建一个简单的自定义筛选器,我将为您提供一个示例。您希望在控制器或模板中解决此问题。两者都是可能的。我希望在模板中解决,但如果需要,在控制器中解决也可以。确定,值是否总是“正”的?是的,它们是(但可以是空的)最简单的方法是创建一个简单的自定义过滤器,我会给你一个例子。这是可行的,但不在html中(将寻找其他解决方案,但非常有用,谢谢)我在测试这个时遇到了一个问题,似乎如果值超过100,它可能是错误的,它只是说42高于135..有INT或float,或者你怎么想?值是字符串还是数字?值是数字,但它可能必须是float吗?我错了,不知怎的,在某个地方它被更改为字符串,会找到位置并修复它,然后它会我很好用!谢谢你这本书,但它不在html中(将寻找其他解决方案,但非常有用,谢谢)我在测试这个时遇到了一个问题,似乎如果值超过100,它可能是错误的,它只是说42高于135..有INT或float,或者你怎么想?值是字符串还是数字?值是数字,但它可能必须是float吗?我错了,不知怎的,在某个地方它被更改为字符串,会找到位置并修复它,然后它会我成功了!谢谢你这项工作,我可能会采用这个解决方案,但是!我遇到了与上面答案相同的问题,不知为什么它说42比135高,为什么会这样?你确定你的值是数字而不是字符串吗?它在我的示例中按预期工作。仔细想想,这可能在角度版本之间发生了变化。W您使用的是什么版本?我使用的是最新的(1.5)问题是,我的程序中的某个地方“Value”被更改为字符串,不知道在哪里或为什么,我会找到它并修复它,谢谢!这是有效的,我可能会使用这个解决方案,但是!我遇到了与上面的答案相同的问题,不知为什么它说42高于135,为什么会这样?你确定你的值是数字和数字吗不是字符串?它在我的示例中按预期工作。仔细想想,这可能在不同的角度版本之间发生了变化。您使用的是什么版本?我使用的是最新的(1.5)。问题是,我的程序“Value”中的某个地方更改为字符串,不知道在哪里或为什么,将找到它并修复它,谢谢!