角度,下划线,弹拨阵列,排​​序

时间:2015-11-23 02:38:36

标签: javascript angularjs underscore.js

我从产品对象中获取了独特的产品等级和最后交付的产品,因此我可以使用下划线将它们作为过滤器放入下拉列表中。在将它们放入下拉列表之前,如何使用下划线或角度对产品等级和最后交付日期进行排序?

product_grades = [“”,“40”,“20”,“30”,“35”,“45”,“50”,“60”]

product_last_delivered = [“2015-07-29T00:00:00.000 + 08:00”,“2015-04-10T00:00:00.000 + 08:00”,“2015-11-19T00:00:00.000 + 08 :00“,”2015-01-05T00:00:00.000 + 08:00“,”2015-11-18T00:00:00.000 + 08:00“,”2015-11-04T00:00:00.000 + 08:00 “,”2015-04-01T00:00:00.000 + 08:00“,”2015-11-13T00:00:00.000 + 08:00“,”2014-10-15T00:00:00.000 + 08:00“, “2015-10-24T00:00:00.000 + 08:00”,“1899-12-31T23:36:42.000 + 07:36”,“2015-10-20T00:00:00.000 + 08:00”,“2015 -06-17T00:00:00.000 + 08:00“,”2015-11-14T00:00:00.000 + 08:00“,”2015-03-12T00:00:00.000 + 08:00“,”2015-07 -18T00:00:00.000 + 08:00“,”2015-07-27T00:00:00.000 + 08:00“,”2015-09-21T00:00:00.000 + 08:00“,”2015-10-07T00 :00:00.000 + 08:00" ]

1 个答案:

答案 0 :(得分:2)

这有两种方法。首先使用原生sort,第二个使用下划线。

<强>助手。

function descending(a, b) {return b - a;}
function str2date(s) {return new Date(s);}
function isNumeric(n) {return !isNaN(parseFloat(n)) && isFinite(n);}

使用Array.prototype.sort

// To sort the grades, first eliminate the non-numbers and then sort.
product_grades.filter(isNumeric).sort(descending);

// To sort the dates, first convert strings to dates and then sort them.
product_last_delivered.map(str2date).sort(descending)

使用下划线_.sortBy

_.sortBy(product_grades.filter(isNumeric), descending)
_.sortBy(product_last_delivered.map(str2date), descending)

<强>积分。

isNumeric来自this DemoUser的精彩回答。