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

如何按lessonid与sequence过滤字典列表,获取对应exerciseModelData及结果索引

如何按lessonid与sequence过滤字典列表,获取对应exerciseModelData及结果索引

针对你的需求,我来给你一步步说明实现方法,结合你提供的示例数据来讲解:

首先先看你给出的简化版示例数据结构:

const exercises = [
  {
    "exerciseid": 3,
    "sequence": 1,
    "lessonid": 1,
    // ...其他属性
    "exerciseModelData": []
  },
  {
    "exerciseid": 4,
    "sequence": 2,
    "lessonid": 1,
    // ...其他属性
    "exerciseModelData": []
  },
  // ...更多项
];

1. 过滤获取对应的exerciseModelData

要筛选出lessonid = 1且sequence = 2的项,并提取它的exerciseModelData,可以用数组的filter()方法:

// 设定你要匹配的条件
const targetLessonId = 1;
const targetSequence = 2;

// 过滤出符合条件的练习项
const matchedItem = exercises.filter(item => 
  item.lessonid === targetLessonId && item.sequence === targetSequence
)[0]; // 因为同一个lessonid下sequence应该是唯一的,所以取第一个结果

if (matchedItem) {
  const targetData = matchedItem.exerciseModelData;
  console.log("找到的exerciseModelData:", targetData);
} else {
  console.log("没有找到符合条件的练习项");
}

如果你确定只会有一个匹配项,也可以用find()方法,它会直接返回第一个满足条件的元素,不用再手动取索引:

const matchedItem = exercises.find(item => 
  item.lessonid === targetLessonId && item.sequence === targetSequence
);

2. 获取匹配项在原数组中的索引

关于获取索引,你自己摸索出的方法是可行的,不过我可以给你一个更简洁高效的写法——用findIndex()方法一步到位:

const targetIndex = exercises.findIndex(item => 
  item.lessonid === targetLessonId && item.sequence === targetSequence
);

if (targetIndex !== -1) {
  console.log("匹配项的索引:", targetIndex);
  // 同时也能直接拿到对应的exerciseModelData
  const targetData = exercises[targetIndex].exerciseModelData;
} else {
  console.log("未找到符合条件的项");
}

对你自己的代码提个小优化点:

// 你的原代码
exercise_result = exercises.filter(e => e.lessonid == selectedLessonId && e.sequence == currentLessonSequence);
exercises_values = Object.values(exercises);
sequence = exercises_values.indexOf(exercise_result[0]);

这里Object.values(exercises)完全没必要,因为exercises本身就是数组,直接用exercises.indexOf(exercise_result[0])就可以了。不过还是更推荐用findIndex(),它是基于条件直接查找索引,不需要先过滤出对象再找位置,逻辑更清晰,性能也更优~

备注:内容来源于stack exchange,提问作者Lawrence DeSouza

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.13 19:00:29