不对,也有可能找不到匹配项,你能不能参考我的逻辑改动
时间: 2024-04-14 09:26:56 浏览: 13
非常抱歉,我理解您的意思了。您希望在找不到匹配项的情况下停止循环,并确保序号正确。以下是根据您的逻辑修改后的代码:
```javascript
findOverrideMapId = async (overrides: CaseOverrideInfo[]) => {
let mapIdTowardIndex = -1;
let page = 1;
const pageSize = 40;
while (page) {
const batchMaps = await this.getMaps(page, pageSize);
for (const [index, item] of overrides.entries()) {
if (item.missingMap) {
const mapIdTowardId = batchMaps.items.find((ele) => ele?.name === item.mapId)?.id;
if (mapIdTowardId) {
mapIdTowardIndex = index;
item.overrideMapId = mapIdTowardId;
}
}
}
if (mapIdTowardIndex !== -1) {
break; // 找到匹配项后立即停止循环
}
page++;
if (!batchMaps || batchMaps.items.length < pageSize) {
break; // 没有更多地图项,停止循环
}
}
this.setState({ initialPage: Math.ceil(mapIdTowardIndex / (pageSize + 2)) });
return overrides;
};
```
在这个修改后的代码中,我们使用一个 while 循环来获取地图项,并在每次循环中遍历 overrides 数组进行匹配。如果找到匹配项,我们会更新对应的 overrideMapId 和记录它的索引。如果找到匹配项后,我们会立即停止循环。如果循环结束仍然没有找到匹配项,我们也会停止循环。最后,我们更新初始页码并返回 overrides 数组。
希望这次的修改符合您的要求。如果还有其他问题,请随时提问。