订购数组问题

时间:2016-06-09 03:00:49

标签: javascript arrays function sorting

好的,所以我创造了各种各样的成绩单。你添加你的姓名和等级,然后将它添加到表格中(当我在Chrome上运行时,它会起作用,但出于某种原因不适用于jsfiddle。这不是问题)

https://jsfiddle.net/bhLhayar/

我遇到的问题是排序。我的单选按钮说"未定义"但我以为我在JS中定义了它们。建议好吗? XD

function sortby(what){
if(what == 'firstN'){studentdata.sortbyfirstSet();}
if(what == 'lastN'){studentdata.sortbylastSet();}
if(what == 'gradeUp'){studentdata.sortbygradeSetUp();}
if(what == 'gradeDown'){studentdata.sortbygradeSetDown();}
updatetable()
}

以下是我认为我出错的代码?与此有关:

sortbyFirstSet(){
        this.data.sort(function (one, two){
            if(one.firstName > two.firstName){return 1}
            if(one.firstName < two.firstName){return -1}
            if(one.firstName == two.firstName){return 0}
        });
    }
    sortbylastSet(){
        this.data.sort(function (one, two){
            if(one.lastName > two.lastName){return 1}
            if(one.lastName < two.lastName){return -1}
            if(one.lastName == two.lastName){return 0}
        });
    }
    sortbygradeSetUp(){
        this.data.sort(function (one, two){
            if(one.finalGrade > two.finalGrade){return 1}
            if(one.finalGrade < two.finalGrade){return -1}
            if(one.finalGrade == two.finalGrade){return 0}
        });
    }
  sortbygradeSetDown(){
    this.data.sort(function (one, two){
      if(one.finalGrade < two.finalGrade){return 1}
      if(one.finalGrade > two.finalGrade){return -1}
      if(one.finalGrade == two.finalGrade){return 0}
    });
  }

2 个答案:

答案 0 :(得分:1)

您似乎将字符串作为变量传递。尝试onclick =&#34; sortby(&#39; lastN&#39;)&#34;等等。

并且您没有更新表功能。也许你想调用updateGradebook()?

<强>更新 还有一件事,你对sort方法的第一次调用是拼写错误的。应该是sortbyFirstSet

答案 1 :(得分:0)

请更正单选按钮上的onclick代码以从sortby(firstN)排序('firstN')。此外,似乎studentdata是一个数组,并且您正在尝试使用它来调用sortby函数。