【发布时间】:2014-10-07 12:20:13
【问题描述】:
var array = [{"id":"0", "stopDate":null},
{"id":"1", "stopDate":"10/06/2014"},
{"id":"2", "stopDate":null},
{"id":"3", "stopDate":"09/06/2014"}];
我有上面的对象数组,想使用下划线按停止日期排序。我正在使用以下功能。
_.sortBy(array, "stopDate"); // asc
_.sortBy(array, "stopDate").reverse(); //desc
Above 方法对日期值进行了正确排序,但忽略了 null。所以 asc 的输出结果是
var actual= [{"id":"0", "stopDate":null},
{"id":"3", "stopDate":"09/06/2014"},
{"id":"2", "stopDate":null},
{"id":"1", "stopDate":"10/06/2014"}];
但我希望 null 被组合在一起,并且应该一个接一个地出现。
var expected= [{"id":"0", "stopDate":null},
{"id":"2", "stopDate":null},
{"id":"3","stopDate":"09/06/2014" },
{"id":"1", "stopDate":"10/06/2014"}];
【问题讨论】:
-
当我运行你的代码时,我得到了“预期”的输出,即 0、2、3、1。
-
那些
stopDate值是字符串还是日期?如果它们是字符串,那么您真的应该将它们重新格式化为 ISO 8601 格式,以便它们正确比较。 -
@Jordan:运气不错,是浏览器的排序实现造成的 :-)
-
@Bergi 实际上是因为原始问题不同(OP 有
"--"而不是null)。
标签: sorting underscore.js