React Native中判断数组内是否存在指定日期键的实现方法
React Native中判断数组内是否存在指定日期键的实现方法
嘿,我来帮你搞定这个判断日期是否存在的问题~ 你的数组结构有点特殊,每个元素都是只包含一个日期键的对象,要检查某个目标日期是否作为键存在其中,其实很容易实现。
基础实现(仅匹配YYYY-MM-DD格式的键)
首先先写最基础的版本,只检查目标日期是否直接作为对象的键存在:
const checkDateExists = (dataArray, targetDate) => { // 遍历数组里的每一个对象 for (const item of dataArray) { // 取出当前对象的唯一键(因为每个元素只有一个日期键) const dateKey = Object.keys(item)[0]; // 对比键和目标日期,匹配就返回true if (dateKey === targetDate) { return true; } } // 遍历完都没找到,返回false return false; }; // 用你的测试数组来验证 const yourArray = [ {"2022-12-06": [{"student": "10", "duration": "00:00:07", "intervals": "1"}]}, {"2022-09-08": [{"student": "20", "duration": "00:00:07", "intervals": "1"}, {"student": "300", "duration": "00:00:07", "intervals": "1"}, {"student": "10", "duration": "00:00:07", "intervals": "1"}]}, {"date20221208": [{"student": "10", "duration": "00:00:07", "intervals": "1"}, {"student": "10", "duration": "00:00:07", "intervals": "1"}, {"student": "10", "duration": "00:00:07", "intervals": "1"}, {"student": "10", "duration": "00:00:07", "intervals": "1"}, {"student": "10", "duration": "00:00:07", "intervals": "1"}]} ]; // 测试调用 console.log(checkDateExists(yourArray, "2022-12-06")); // 输出 true console.log(checkDateExists(yourArray, "2022-09-09")); // 输出 false
扩展实现(同时匹配两种日期键格式)
看你的数组里还有date20221208这种格式的键,如果你需要输入2022-12-08也能匹配到这个键,可以修改函数,自动把目标日期转换成对应的格式再检查:
const checkDateExists = (dataArray, targetDate) => { // 把目标日期转换成dateYYYYMMDD格式(去掉横杠,前面加date) const formattedTargetDate = `date${targetDate.replace(/-/g, "")}`; for (const item of dataArray) { const dateKey = Object.keys(item)[0]; // 同时检查原始日期格式和转换后的格式 if (dateKey === targetDate || dateKey === formattedTargetDate) { return true; } } return false; }; // 测试调用 console.log(checkDateExists(yourArray, "2022-12-08")); // 输出 true,匹配到date20221208
更健壮的版本(支持对象多键的情况)
如果以后你的数组对象可能包含多个键,这个版本可以遍历每个对象的所有键来检查,适用性更广:
const checkDateExists = (dataArray, targetDate) => { const formattedTargetDate = `date${targetDate.replace(/-/g, "")}`; for (const item of dataArray) { // 遍历当前对象的所有键 for (const key of Object.keys(item)) { if (key === targetDate || key === formattedTargetDate) { return true; } } } return false; };
这些代码在React Native里可以直接用,逻辑很清晰,你可以根据自己的实际需求选对应的版本~
备注:内容来源于stack exchange,提问作者Mohit Jain
相关产品推荐
相关产品推荐

