数组和div中的最大数字

时间:2013-08-24 10:01:34

标签: javascript jquery html

如何在数组中找到最高数字并对数组进行排序,使其首先具有最高数字?

我也在使用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; ----

5 个答案:

答案 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)

我认为这样做是你想要的:

http://jsfiddle.net/j8bLc/2/

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}}

Fiddle

答案 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);

这将对您的数组进行排序