Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/418.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 数组中的最高值(值是数组对象中的属性)_Javascript_Angularjs - Fatal编程技术网

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”中的某个地方更改为字符串,不知道在哪里或为什么,将找到它并修复它,谢谢!