在jquery中等效的.Max()是什么

Mo *_*our 13 javascript linq jquery max

我想知道如何编写一个jquery语句来获取匹配元素的属性的最大值.

在LINQ我们说这样的话:

var maxHeight = list.Max(a=> a.Height);
Run Code Online (Sandbox Code Playgroud)

在jquery中执行此操作的最佳方法是什么?

例如,假设我们要选择容器内所有:text元素的最大数值:

var allInputs = $("#container :text");
// how to get the max of parseInt(item.val())?
Run Code Online (Sandbox Code Playgroud)

当然,对所有元素进行循环是一个选项,但我很想知道是否有一个与jquery有关的魔法.

问候.

Igo*_*mov 14

其中一种可能的解决方案是使用map函数,然后使用Math.max结果:

var values = $.map($("input:text"), function(el, index) { return parseInt($(el).val()); });
var max = Math.max.apply(null, values);
Run Code Online (Sandbox Code Playgroud)

如果需要,可以写成一行.

小提琴:http://jsfiddle.net/WuVLr/1/

更新:

或者,您可以这样申请map:

var values = $("input:text").map(function(index, el) { return parseInt($(el).val()); }).get();
Run Code Online (Sandbox Code Playgroud)


Mo *_*our 9

根据这里的所有对话和我在网上的搜索,我们可以说(此时)没有强大的内置jquery方法来计算匹配选择器的元素属性的.max()和.min().

根据Igor的建议,我提出了以下两个jquery函数,如果需要反复使用.max()和.min()函数,可以将它们添加到项目中:

$.fn.max = function(selector) { 
    return Math.max.apply(null, this.map(function(index, el) { return selector.apply(el); }).get() ); 
}

$.fn.min = function(selector) { 
    return Math.min.apply(null, this.map(function(index, el) { return selector.apply(el); }).get() );
}

// Usage:

var maxWidth = $("a").max(function() {return $(this).width(); });
var minWidth = $("a").min(function() {return $(this).width(); });
Run Code Online (Sandbox Code Playgroud)

在这里看一个演示:http://jsfiddle.net/NF7v7/3/