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

React Native中如何将多个ID与嵌套数组中的ID匹配

问题分析与修正方案

你的代码目前返回的是包含匹配ID食物的整个分类对象(比如title为foodResturants.recommended的完整对象),但你实际需要的应该是那些ID与addedItems匹配的具体食物条目(比如id=0、4的食物对象)。

修正代码方案

方案1:获取所有匹配的食物条目(一维数组)

用flatMap先把所有嵌套的foodItem展开成一维数组,再筛选出ID在addedItems中的条目:

const [addedItems, setItems] = useState(props.addItemsToCart);
const [selectedItems, setSelectedItems] = useState([]);

useEffect(() => {
  // 展开所有分类下的食物,再筛选ID匹配的条目
  const matchedItems = ResturentData.flatMap(category => category.foodItem)
    .filter(food => addedItems.includes(food.id));
  setSelectedItems(matchedItems);
}, [addedItems]);

方案2:保留分类信息的匹配结果

如果需要知道每个匹配食物所属的分类,可以这样处理:

useEffect(() => {
  const matchedItemsWithCategory = [];
  ResturentData.forEach(category => {
    const matchedFoods = category.foodItem.filter(food => addedItems.includes(food.id));
    if (matchedFoods.length > 0) {
      matchedItemsWithCategory.push({
        categoryTitle: category.title,
        foods: matchedFoods
      });
    }
  });
  setSelectedItems(matchedItemsWithCategory);
}, [addedItems]);

原代码不符合预期的原因

原代码中ResturentData.filter(...)是遍历每个分类对象,只要分类下有至少一个食物ID匹配,就把整个分类对象加入结果。最终得到的是分类数组,而非你需要的具体食物条目。

内容的提问来源于stack exchange,提问作者onlywork qwe

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 03:15:04