检查字符串是否在javascript中排序

时间:2016-06-21 13:27:53

标签: javascript

我想检查这个字符串是否已排序?

var myBucket = "1D2D1W2W1M2M3M4M5M6M9M1Y18M2Y30M3Y4Y5Y6Y8Y10Y15Y20Y25Y30Y1D2D1W2W1M2M3M4M5M6M9M1Y18M2Y30M3Y4Y5Y6Y8Y10Y15Y20Y25Y30Y";

1D=One Day 2D=2 Day ...
1W=1 Week 
1M=1 Months 18M=18 Months
1Y=1 years
like 1D<2D<1W<3W<1M<10M<1Y<18M<2Y ...

我该怎么检查?

提前谢谢。

1 个答案:

答案 0 :(得分:0)

我建议匹配一个数字和长度指标。然后使用Array#every循环并将零件拆分为数字和长度指示器。使用长度的哈希表,您可以计算长度并使用之前的最后一个值进行测试。

如果更大,则继续,否则离开循环并获得false

如果循环遍历所有元素,并且回调返回true,则返回true

var myBucket = '1D2D1W2W1M2M3M4M5M6M9M1Y18M2Y30M3Y4Y5Y6Y8Y10Y15Y20Y25Y30Y1D2D1W2W1M2M3M4M5M6M9M1Y18M2Y30M3Y4Y5Y6Y8Y10Y15Y20Y25Y30Y',
    values = { D: 1, W: 7, M: 30, Y: 365 },
    result = myBucket.match(/\d+[DWMY]/g).every(function (a, i) {
        var p = a.split(/(?=[DWMY])/),
            value = p[0] * (values[p[1]] || 0);
        if (value > this.last) {
            this.last = value;
            return true;
        }
    }, { last: -Infinity });

console.log(result);

相关问题