2017-07-28 81 views
0

我正在研究一个函数,将在中期评分等级递增下对我的列表进行排序。所以,我想在FF代码:排序在下划线js

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

您正在以错误的方式使用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); 
}); 
+0

是的,我认为这一个工程。我应该切换每个的位置,并将排序的项目放入一个变量中。 –

0

按照docs

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

这可能是你过于复杂的事情。排序根据如midterm_score属性的值的列表,只需把它作为第二个参数,因为这样的:

sortBy(students, 'midterm_score');

使用功能为iteree是变换你的数据,这确实在这里似乎没有必要。您需要使用return命令(根据文档)明确地使用这样的函数返回转换后的结果。