js输出未排序的数组

ak8*_*k85 1 javascript arrays sorting jquery

我有下面的代码也在这个小提琴.
我列出了下面的输出和预期输出.我无法理解为什么我还没有对rNums进行排序但它仍然输出了sorterd结果?

如果我注释掉sort函数,则随机出现,但不是有序的.我在这做错了什么?

随机应该在nNums中显示,有序应该按数字顺序显示?

    <ul id="random"></ul>
    <ul id="ordered"></ul>

    <script>
    var rNums = [1,5,3,2,4];
    console.log(rNums);
    var sortRNums = rNums;

    sortRNums.sort(function (a, b) {
        return a - b
    });

    $.each(rNums, function (index, value) {
        $("#random").append('<li>' + value + '</li>');
    });

    $.each(sortRNums, function (index, value) {
        $("#ordered").append('<li>' + value + '</li>');
    });
    console.log(sortRNums);
    </script>
Run Code Online (Sandbox Code Playgroud)

产量

    <ul id="random">
            <li>1</li>
            <li>2</li>
            <li>3</li>
            <li>4</li>
            <li>5</li>
    </ul>

    <ul id="ordered">
            <li>1</li>
            <li>2</li>
            <li>3</li>
            <li>4</li>
            <li>5</li>
    </ul>
Run Code Online (Sandbox Code Playgroud)

预期产出

    <ul id="random">
            <li>1</li>
            <li>5</li>
            <li>3</li>
            <li>2</li>
            <li>4</li>
    </ul>

    <ul id="ordered">
            <li>1</li>
            <li>2</li>
            <li>3</li>
            <li>4</li>
            <li>5</li>
    </ul>
Run Code Online (Sandbox Code Playgroud)

Yur*_*nko 5

sort 在排序之前修改您需要创建副本的原始数组.

var sortRNums = rNums.slice(0);
Run Code Online (Sandbox Code Playgroud)