Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/79.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 使用jQuery获取数组中具有属性最大值的元素_Javascript_Jquery_Arrays_Minmax - Fatal编程技术网

Javascript 使用jQuery获取数组中具有属性最大值的元素

Javascript 使用jQuery获取数组中具有属性最大值的元素,javascript,jquery,arrays,minmax,Javascript,Jquery,Arrays,Minmax,我有一个自定义JavaScript对象的数组,它有一个名为order的属性。我有一个这个对象的数组,我想得到具有最高“顺序”的项 因为我对jQuery比较陌生,而且来自C#背景,所以这是我非常欣赏LINQ的一个例子:) 总之,长话短说,我检查了以下链接,但它们只返回值,而不是数组元素本身的引用。。。因此,如果您能帮我更改它以返回元素,我们将不胜感激 正在讨论的自定义对象(我有一个数组)如下所示: var severity = function (key, value, order) {

我有一个自定义JavaScript对象的数组,它有一个名为
order
的属性。我有一个这个对象的数组,我想得到具有最高“顺序”的项

因为我对jQuery比较陌生,而且来自C#背景,所以这是我非常欣赏LINQ的一个例子:)

总之,长话短说,我检查了以下链接,但它们只返回值,而不是数组元素本身的引用。。。因此,如果您能帮我更改它以返回元素,我们将不胜感激

正在讨论的自定义对象(我有一个数组)如下所示:

var severity = function (key, value, order) {
    this.key = key;
    this.value = value;
    this.order = order;
};
试试这个:

function getHighest(array, value){
  return array.sort(function(a,b){ b[value] - a[value] })[0];
}

也许我看错你了。。。但这是你要找的吗

function getHighest(array) {
    var max = {};
    for (var i = 0; i < array.length; i++) {
        if (array[i].order > (max.order || 0))
            max = array[i];
    }
    return max;
}

// var array = [object, object, object ...];
var highest = getHighest(array);
函数getHighest(数组){
var max={};
对于(var i=0;i(max.order | | 0))
max=数组[i];
}
返回最大值;
}
//变量数组=[对象,对象,对象…];
var-highest=getHighest(数组);

演示:对数组排序并弹出数组中的最后一个对象

function sortObj(a, b){
     return a.order < b.order ? 0 : 1;
}
obj.sort(sortObj)   
var highest =obj.pop();
函数sortObj(a,b){
返回a.order
演示:

使用yourarray.sort()。它将按升序到降序排序。它也适用于二维数组

array[array.map((o)=>o.order).indexOf(Math.max(...array.map((o)=>o.order)))]
演示:
let数组=[{order:3},{order:5},{order:2},{order:2}];
console.log(
array[array.map((o)=>o.order).indexOf(Math.max(…array.map((o)=>o.order))]

)
给我们一个完整的代码,或者一个jsfiddle.net演示。可能重复的排序需要花费很高的代价才能找到最大值。您正在执行的操作比需要的要多。您的排序函数没有返回任何内容,要在索引
0
处获得最高值,您需要执行小于比较
的操作。我有一个包含产品id和价格值的数组,此解决方案适合我。