2

我怎样才能找到数组中的最大数字并对数组进行排序,使其首先具有最大数字?

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

4

5 回答 5

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);
于 2013-08-24T10:52:39.247 回答
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]);
}
于 2013-08-24T10:16:34.797 回答
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 操作。

于 2013-08-24T10:38:44.870 回答
0

printarray data的里面reverse order你可以找到array length喜欢的,

for(var i=mydivs.length-1;i>=0;i++)
{
    console.log(mydivs[i]['html']);
}

小提琴

于 2013-08-24T10:17:44.830 回答
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);

这将对您的数组进行排序

于 2013-08-24T10:46:11.800 回答