如何在数组中找到最高数字并对数组进行排序,使其首先具有最高数字?
我也在使用jQuery,如果这样可以让它变得更容易。我无法弄清楚如何对它进行排序,然后将带有html的排序数组输出到usersInRoom div中。
希望有人可以帮助我!
我对javascript中的“max”有点了解,但它很复杂,并且与我的代码不符。
我会对mydivs [.......] ['number']进行排序而不是mydivs,因为它包含一个数组中的数组。
<div id="usersInRoom">
<div class="entry in_room" id="userInRoom-2" style="background-color: rgb(255, 255, 255);">
<table style="width:100%">
<tbody>
<tr>
<td style="width:32px">
<img
src="https://fbcdn-profile-a.akamaihd.net/hprofile-ak-prn1/c33.33.414.414/s200x200/996882_221295918024677_1913237122_n.jpg"
style="height:32px;width:32px">
</td>
<td style="vertical-align:middle"><strong>Stefanie Pedersen</strong>
</td>
<td align="right" style="vertical-align:middle;color:#999"><span id="exp-2" class="exp">6</span> exp.
</td>
</tr>
</tbody>
</table>
</div>
<div class="entry in_room" id="userInRoom-1" style="background-color: rgb(155, 229, 162);">
<table style="width:100%">
<tbody>
<tr>
<td style="width:32px">
<img
src="https://fbcdn-profile-a.akamaihd.net/hprofile-ak-frc1/c176.49.608.608/s200x200/429356_10151257167066983_1091687280_n.jpg"
style="height:32px;width:32px">
</td>
<td style="vertical-align:middle"><strong>Bare Kald Mig Jesper</strong>
</td>
<td align="right" style="vertical-align:middle;color:#999"><span id="exp-1" class="exp">14</span> exp.
</td>
</tr>
</tbody>
</table>
</div>
</div>
这是我的jQuery代码,用于将HTML和数字插入到数组中,之后它应该“只”对其进行排序并再次输出。
<script>
var numbers = [];
var mydivs = [];
var arr = $("#usersInRoom").find(".exp");
$.each(arr, function (e) {
var eq = arr[e];
console.log(eq);
mydivs.push({
"html": $(eq).parents(".entry").parents("div").html(),
"number": parseInt($(eq).text())
});
});
</script>
我会排序mydivs [.......] ['number']&lt; ----
答案 0 :(得分:2)
这个应该使用超过2个元素:
var aRows = jQuery.makeArray($('#usersInRoom').children());
aRows.sort(function(a,b) {
return parseInt($(b).find('.exp').text()) -
parseInt($(a).find('.exp').text());
});
$('#usersInRoom').empty().append(aRows);
答案 1 :(得分:1)
我不知道您的数组是什么样的,但我认为您可以使用JavaScript排序方法。
var NumbersArray = [400,200,600,300,1000];
var SortedArray = NumbersArray.sort(function(a,b){return b-a});
alert(SortedArray);
http://www.w3schools.com/jsref/jsref_sort.asp
如果您想在排序前找到最高的数字,可以尝试这样的事情:
var NumbersArray = [400,200,600,300,1000];
var MaxPreviousNumber = 0;
for (var i = 0; i <= NumbersArray.length; i++) {
var MaxPreviousNumber = Math.max(MaxPreviousNumber, NumbersArray[i]);
}
答案 2 :(得分:1)
我认为这样做是你想要的:
var arr = $("#usersInRoom").find(".exp");
$.each(arr, function (key, el) {
var curr = parseInt($(el).text());
var top = parseInt($("#usersInRoom .exp").eq(0).text());
if(curr > top) {
$(el).closest(".entry").prependTo('#usersInRoom');
}
});
但是,可能有一个更好的解决方案,更少的DOM操作。
答案 3 :(得分:0)
要print
array data
reverse order
array length
for(var i=mydivs.length-1;i>=0;i++)
{
console.log(mydivs[i]['html']);
}
,您可以找到{{1}}之类的,
{{1}}
答案 4 :(得分:0)
如果您仔细观察:http://www.w3schools.com/jsref/jsref_sort.asp,您可以看到sort有一个参数 - 您可以使用自己的排序功能。
因此,您可以使用自己的比较函数
对数组进行排序function compare(a,b) {
if (a.number < b.number)
return -1;
if (a.number > b.number)
return 1;
return 0;
}
objs.sort(mydivs);
这将对您的数组进行排序