首页 > 解决方案 > 最后将所有空值放入数组中

问题描述

我需要最后将所有空值放在数组中。下面的代码显示了我的尝试

1)此代码最后将所有空值发送到数组中,但其他值未以排序方式出现。

var dateArray = [
  '','',
  new Date('2019-06-28',).toISOString().slice(0, 10).replace(/-/g, "."),
  '',
new Date('2019-06-01').toISOString().slice(0, 10).replace(/-/g, "."),
new Date('2019-06-02').toISOString().slice(0, 10).replace(/-/g, "."),
'',''
]
dateArray.sort(function(a, b) {
    return (a ==='') - (b ==='') || a - b;
});

console.log(dateArray)

2)当我删除.toISOString().slice(0, 10).replace(/-/g, ".")它时,它按预期工作,但在输出中显示完整日期Fri Jun 28 2019 05:30:00 GMT+0530(印度标准时间)。我只需要显示这种格式'2019.06.28'

var dateArray = [
  '','',
  new Date('2019-06-28',),
  '',
new Date('2019-06-01'),
new Date('2019-06-02'),
'',''
]
dateArray.sort(function(a, b) {
    return (a ==='') - (b ==='') || a - b;
});

console.log(dateArray)

标签: javascript

解决方案


您的上一个版本有效,因为

 new Date() - new Date()

将日期转换为数字(自 1970 年以来的毫秒数),而:

  '2019-06-01' - '2019-06-01'

将不起作用,因为字符串无法转换为数字。因此a - b,这不是比较它们的正确方法。要比较字符串,请使用a.localeCompare(b).


推荐阅读