在Underscore js中排序

时间:2017-07-28 15:43:07

标签: javascript sorting underscore.js

我正在开发一个功能,可以在中期评分等级下对我的列表进行排序。所以我尝试了ff代码:

if(score === 'Midterm Score'){
         _.each(students, function(elem, index, list){
           _.sortBy(students, function(elem){
              console.log(elem.midterm_score);
           });
          });
       }

所以使用elem.midterm_score它没有通过中期得分对我的列表进行排序,如此处所示。

enter image description here

我希望它是90,80,70等等。知道我错过了什么吗?请帮忙!

2 个答案:

答案 0 :(得分:2)

您正在以错误的方式使用sortBy方法。请在docs

中查看
// First of all we need students
var students = [
    {name: 'a', midterm_score: 60}, 
    {name: 'b', midterm_score: 70}, 
    {name: 'c', midterm_score: 40}
];

// Sort by midterm score and assign to students variable
students = _.sortBy(students, 'midterm_score');

// print array in each loop
_.each(students, function(el) {
    console.log(el);
});

答案 1 :(得分:0)

根据docs

  

返回(稳定)排序的列表副本,按升序排列   通过iteratee运行每个值的结果。 iteratee也可能   是要排序的属性的字符串名称(例如,长度)。

可能是你过于复杂的事情。要根据midterm_score等属性的值对列表进行排序,只需将其作为第二个参数传递,如下所示:

sortBy(students, 'midterm_score');

使用iteree函数用于数据转换,这在这里似乎没有必要。在这样的函数中,您需要显式地使用return命令返回转换后的结果(根据文档)。