日期代码之间的比较

时间:2018-01-09 08:18:23

标签: javascript arrays comparison string-comparison comparison-operators

我有一系列值:

var array_1 = ["1W", "2W", "3W","1M", "2M", "3M", "6M","9M","1Y"]
W代表数星期,M代表数月,Y代表数年。如何进行字符串比较以便比较

"1Y" > "9M"

将返回true

2 个答案:

答案 0 :(得分:2)

您可以采用相同的基础,例如每天获取信息的日期,并将信件等同于天数并退回产品。



function getDays(string) {
    return string.slice(0, -1) * { W: 7, M: 30, Y: 365 }[string.slice(-1)];
}

var array = ["1W", "2W", "3W","1M", "2M", "3M", "6M","9M","1Y"]

console.log(array.map(getDays));




答案 1 :(得分:1)

这是一个易于扩展的简单解码器。

本质上,它过滤数值,然后根据它在字符串中找到的时间符号(W,M,...)返回它乘以某个常量。

function decodeDateCode(dateCode) {
  var numeric = parseInt(dateCode.replace(/\D/igm, ''), 10);
  if (dateCode.indexOf("D") >= 0) {
    return numeric;
  }
  if (dateCode.indexOf("W") >= 0) {
    return numeric * 7;
  }
  if (dateCode.indexOf("M") >= 0) {
    return numeric * (365 / 12);
  }
  if (dateCode.indexOf("Y") >= 0) {
    return numeric * 365;
  }
}
//test
var dateCodes = ["1W", "2W", "3W", "1M", "2M", "3M", "6M", "9M", "1Y", "50W"];
//Decode entire list
console.log("Decoded list:", dateCodes.map(decodeDateCode));
//Sort entire list in descending order
console.log("Sorted descending list:", dateCodes.sort(function(a, b) {
  return decodeDateCode(b) - decodeDateCode(a);
}));
//Make simple comparison
console.log("Simple comparison:", decodeDateCode("1Y") > decodeDateCode("9M"));