如何从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);
你能告诉我我做错了什么吗?
答案 0 :(得分:4)
更新回答:此解决方案正在运行
所以在你的情况下,你会有这样的事情:
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');
});