JavaScript:如何获得最小数量

时间:2014-06-14 14:28:50

标签: javascript jquery

如何从JavaScript中获取数组的最小值?我确实尝试过Math.min方法,似乎它没有按预期工作。

例如,我有四个带数值的div:

HTML:

<div id="r">3121</div>
<div id="g">2334</div>
<div id="b">3445</div>
<div id="a">4121</div>

JavaScript的:

var r = $('#r').text(),
    g = $('#g').text(),
    b = $('#b').text(),
    p = $('#a').text();

var mainBox = [r,g,b,a];
var minN = Math.min(mainBox);
alert(minN);

你能告诉我我做错了什么吗?

6 个答案:

答案 0 :(得分:4)

更新回答:此解决方案正在运行

  1. 你必须用parseInt(...,10)来做。
  2. Math.min不接受数组。
  3. 所以在你的情况下,你会有这样的事情:

    function getMinFromArray (array_of_values) {
        return array_of_values.sort()[0];   
    };
    
    var r = parseInt($('#r').text(), 10),
        g = parseInt($('#g').text(), 10),
        b = parseInt($('#b').text(), 10),
        p = parseInt($('#a').text(), 10);
    
    var mainBox = [r,g,b,a];
    var result = getMinFromArray(mainBox);
    
    alert(result);
    

    这是一个有效的例子:http://jsfiddle.net/CJfWu/2/

答案 1 :(得分:2)

我认为你不能像这样将数组传递给Math.min()

试试这样:

var minValue = Math.min.apply(Math, mainBox);

或者只是像这样使用它:

var minValue = Math.min(r,g,b,p);

答案 2 :(得分:1)

工作小提琴fiddle

使用以下代码

//parseInt to convert String => Int.
var    r = parseInt($('#r').text(),10);
var    g = parseInt($('#g').text(),10);
var    b = parseInt($('#b').text(),10);
var    p = parseInt($('#a').text(),10);

//Here sort the values
var minN = Math.min(r,g,b,p);
alert(minN);

答案 3 :(得分:0)

试试这个:

var r = parseInt($('#r').text(), 10),
    g = parseInt($('#g').text(), 10),
    b = parseInt($('#b').text(), 10),
    p = parseInt($('#a').text(), 10);

var minN=Math.min(r,g,b,p);
alert(minN);

由于.min()不接受数组参数而只是逗号分隔的整数,因此您将逐个放置整数,它将返回最小值。

答案 4 :(得分:0)

您可以尝试this

var vals = [];
$('#r, #g, #b, #a').each(function(i){
    vals[i] = $(this).text();
});
var min = Math.min.apply(Math, vals);

答案 5 :(得分:0)

我更喜欢对包含数字的任意数量的div使用通用解决方案。 首先,为那些以数字作为文本的div添加一个类。例如,class =&#34; items&#34;。 然后使用以下函数获取最小值

var getMinValueForDivs = function (divsClass) {
    var itemDivs = $('.' + divsClass);
    var values = [];
    itemDivs.each(function (index, item) {
        values.push(item.innerHTML);
    });

    return Math.min.apply(this, values);
}

前:

$(document).ready(function () { 
    getMinValueForDivs('items'); 
});