Javascript 如何检查数字是否在“more”之前;口头的;一串

Javascript 如何检查数字是否在“more”之前;口头的;一串,javascript,jquery,Javascript,Jquery,给定一个var-dateText输出以下任何一项: dateText = "12-5 November 17 May 1954"; dateText = "12 January 1976"; dateText = "12 22 March 1965"; 完成后: for(var i = 0; i < dateText.length; i++) { d += dateText[i] + ' '; } var words = d.replace("–", " ").replace("-"

给定一个
var-dateText输出以下任何一项:

dateText = "12-5 November 17 May 1954";
dateText = "12 January 1976";
dateText = "12 22 March 1965";
完成后:

for(var i = 0; i < dateText.length; i++) {
  d += dateText[i] + ' ';
}
var words = d.replace("–", " ").replace("-", " ").replace(",", " ").replace("/", " ").split(' ');
words = $.grep(words, function(n, i){
  return (n !== "" && n != null);
});
var array = words;
var newArray = array.filter(function(v){return v!==''});
for (const word of newArray) {
    if (months.has(word)) {
      localSpaceTime.Time.months.push(word);
    } else if (+word < 32) {
      localSpaceTime.Time.days.push(+word);
    } else if (+word < 2200) {
      localSpaceTime.Time.years.push(+word);
    } else if (/\w+/.test(word)) {
      localSpaceTime.Time.suffixes.push(word);
    }
}
我们的结局是:

    var localSpaceTime = {
      Title : "",
        Time : {
            days : ["12", "5", "7"],
            months : ["november", "May"],
            years : ["1954"]
        }
    };
这很好,但是
数据库
不知道第12个月、第5个月或第7个月属于哪个月

我的想法是:

检查数字是否位于文字字符串(即月份)之前,如果是这样:

英语目标:

Month: November
  Days: 12, 5
Month: May
  Days: 17
Year: 1954
我知道这有点像是一种
AI
教脚本像人类一样思考,但这是可行的,只是问我在没有想法的情况下该怎么做

更新

另一种情况是:

dateText = "12-5 November 17 May 1954 CE";
var localSpaceTime = {
      Title : "",
        Time : {
            days : ["12", "5", "7"],
            months : ["november", "May"],
            years : ["1954"],
            suffix : ["CE"]
        }
    };
Month: November
  Days: 12, 5
Month: May
  Days: 17
Year: 1954
Suffix: CE
那么数组将是:

dateText = "12-5 November 17 May 1954 CE";
var localSpaceTime = {
      Title : "",
        Time : {
            days : ["12", "5", "7"],
            months : ["november", "May"],
            years : ["1954"],
            suffix : ["CE"]
        }
    };
Month: November
  Days: 12, 5
Month: May
  Days: 17
Year: 1954
Suffix: CE
然而,我们的最终目标是:

dateText = "12-5 November 17 May 1954 CE";
var localSpaceTime = {
      Title : "",
        Time : {
            days : ["12", "5", "7"],
            months : ["november", "May"],
            years : ["1954"],
            suffix : ["CE"]
        }
    };
Month: November
  Days: 12, 5
Month: May
  Days: 17
Year: 1954
Suffix: CE
日期也可以是

1 May 1954 22-5 April 1970


由于我所得到的结果,我认为这些可能性到此为止,因此解析它们就可以了。

如果我们可以假设输入中唯一的非数字/空白/标点符号字符是月份名称,并且格式始终如您所述,然后,最简单的解决方案可能是对月份名称进行拆分。例如:

const input='1954年5月17日11月12日至5日';
console.log(input.split(/\s+([a-z]+)\s+//i));

//=>['12-5','11','17','5','1954']
你的最终目标是什么?似乎您正在使解析问题变得比需要的更困难。使用类似于:
年->月->月->日的数组不是更容易吗?这将是很容易建立正确的,并获得信息的方式,你想要的,然后在回答你的算法pls,我会检查它,我出了主意,我会工作。可能需要一段时间。我已经有一段时间没有使用Javascript了。但是一个答案会出现:)@icecub ok man。直接出栈!对不起,是指康普顿,因为你的昵称:))等等,这看起来很有希望。这绝对是一个比我正在研究的更好的解决方案。所以我建议你用这个:)用一个suffix@downFast我明白,但你想要的超出了我的理解范围。我可能能够做到这一点,但我的方法是将所有对象分割成各种类型,并重建一个全新的数组。它会起作用,但这肯定是错误的做法。@icecub嗯,我明白了