使用javascript中的sort方法对数组进行排序

时间:2016-03-27 11:03:45

标签: javascript arrays sorting

我已编写此代码但它不起作用。它显示未排序的数组以及按钮,但是当我点击按钮时没有任何反应。 我是javascript的新手。到目前为止我所知道的是我们可以通过javascript使用onclick方法调用函数。我们可以用c或c ++编写函数。这就是我认为我在这里所做的,但它并没有显示已排序的数组。



var myarray = [4, 6, 2, 1, 9, ];
document.getElementById("demo").innerHTML = myarray;

function sort(myarray) {
  var count = array.length - 1,
    swap,
    j,
    i;

  for (j = 0; j < count; j++) {
    for (i = 0; i < count; i++) {
      if (array[i] > myarray[i + 1]) {
        swap = myarray[i + 1];
        myarray[i + 1] = myarray[i];
        myarray[i] = swap;
      }
    }
    document.write(myarray);
  }
}
&#13;
<p>Click the button to sort the array.</p>
<button onclick="sort()">Try it</button>
<p id="demo"></p>
&#13;
&#13;
&#13;

5 个答案:

答案 0 :(得分:3)

主要问题是,决定是否应该设置参数。如果没有,则使用myarray进行所有操作。如果您决定使用参数,则只使用参数变量。

&#13;
&#13;
var myarray = [4, 6, 2, 1, 9, ];
document.getElementById("demo").innerHTML = myarray;

function sort() {                                        // no need for a parameter
    var count = myarray.length - 1,                      // change it to myarray
        swap,
        j, i;

    for (j = 0; j < count; j++) {
        for (i = 0; i < count; i++) {
            if (myarray[i] > myarray[i + 1]) {           // access only myarray
                swap = myarray[i + 1];
                myarray[i + 1] = myarray[i];
                myarray[i] = swap;
            }
        }
    }
    document.getElementById("demo").innerHTML = myarray; // return the sorted array
}
&#13;
<p>Click the button to sort the array.</p>
<button onclick="sort()">Try it</button>
<p id="demo"></p>
&#13;
&#13;
&#13;

答案 1 :(得分:2)

var myarray = [4, 6, 2, 1, 9];
document.getElementById("demo").innerHTML = myarray;

function sort(myarray) {
  var count = myarray.length - 1,
    swap,
    j,
    i;

  for (j = 0; j < count; j++) {
    for (i = 0; i < count; i++) {
      if (myarray[i] > myarray[i + 1]) {
        swap = myarray[i + 1];
        myarray[i + 1] = myarray[i];
        myarray[i] = swap;
      }
    }       
  }
 document.getElementById("result").innerHTML = myarray;
}
<p>Click the button to sort the array.</p>
<button onclick="sort(myarray)">Try it</button>
<p id="demo"></p>
<p id="result"></p>

答案 2 :(得分:1)

我发现代码存在2个问题。第一个是您在2行中写了array而不是myarray

var count = array.length - 1,

if (array[i] > myarray[i + 1]) {

第二个问题是在调用函数时没有将数组作为参数传递,所以:

<button onclick="sort()">Try it</button>

应该是:

<button onclick="sort(myarray)">Try it</button>

答案 3 :(得分:1)

首先,数组定义在末尾有一个额外的,。 接下来,您在if语句中使用了array而不是myarray

排序后,您需要声明:

document.getElementById("demo").innerHTML = myarray;

答案 4 :(得分:1)

您正在使用未定义或未知的变量'array'。此外,在buttonclick上,您没有将任何参数传递给sort函数。这就是你收到错误的原因。

var myarray = [4, 6, 2, 1, 9, ];

function sort(myarray) {
  var count = myarray.length - 1,
    swap,
    j,
    i;

  for (j = 0; j < count; j++) {
    for (i = 0; i < count; i++) {
      if (myarray[i] > myarray[i + 1]) {
        swap = myarray[i + 1];
        myarray[i + 1] = myarray[i];
        myarray[i] = swap;
      }
    }
    document.write(myarray);
  }
}

<p>Click the button to sort the array.</p>
<button onclick="sort(myarray)">Try it</button>
<p id="demo"></p>