如何从含日期的字符串中获取最新日期对应的Type of Check值
解决方法
你的问题核心是只提取了日期,但没把日期和对应的「Type of Check」关联起来。可以通过先拆分独立记录块、再逐个解析的方式解决,具体代码如下:
var myString = `Date: 04/08/2020, Type of Check: Large, Investors: ABC -- Date: 01/22/2021, Type of Check: Debt, Investors: ABC -- Date: 01/01/2022, Type of Check: Balance, Investors: ABC`; // 1. 按分隔符拆分每个记录块,过滤空内容 const recordBlocks = myString.split(' -- ').map(block => block.trim()).filter(block => block); // 2. 解析每个块,提取日期和对应的Type of Check const parsedRecords = recordBlocks.map(block => { const dateMatch = block.match(/Date: (\d{1,2}\/\d{1,2}\/\d{4})/); const typeMatch = block.match(/Type of Check: (\w+)/); return { date: dateMatch ? new Date(dateMatch[1]) : null, typeOfCheck: typeMatch ? typeMatch[1] : null }; }).filter(record => record.date && record.typeOfCheck); // 过滤无效记录 // 3. 按日期倒序排序,取最新的记录 const latestRecord = parsedRecords.sort((a, b) => b.date.getTime() - a.date.getTime())[0]; // 4. 输出结果 console.log(`Type of Check: ${latestRecord.typeOfCheck}`); // 输出 Type of Check: Balance
关键说明:
- 用
split(' -- ')将原始字符串拆分成独立的信息块,每个块对应一组完整的日期和检查类型数据 - 针对每个块,用正则分别提取日期和「Type of Check」内容,转换成带关联关系的对象
- 对有效记录按日期倒序排序,第一个元素就是最新日期对应的记录
- 注意修正你原始代码里的拼写错误:
getTim应该是getTime()
内容的提问来源于stack exchange,提问作者Anthony H.
相关产品推荐
相关产品推荐

