You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.23 07:03:12