首页 > 解决方案 > .map() 只有在有数组时才能使用?

问题描述

我是新手,我正在传递一个物品道具。一些项目在 items.modifiers 中有一个空数组。当我使用 if 条件时,我仍然收到“无法读取未定义的属性‘映射’”的错误,下面是我的代码。任何帮助将非常感激。

const NewModal = ({ item }) => {
  if (item.modifiers !== "") {
    item.modifiers.map((modifier) => console.log(modifier.cat_name));
  }
};

return [
  {
    items: [
      {
        item_id: 1,
        item_name: "Philadelphia Steak Sandwich",

        modifiers: {
          cat_name: " Choose a side",
          mod_items: [
            { mod_item_name: "French Fries", price: 1 },
            { mod_item_name: "Cole Slaw", price: 2 },
          ],
        },
      },
      {
        item_id: 2,
        item_name: "Philadelphia Steak Sandwich Deluxe",

        modifiers: "",
      },
    ],
  },
];

标签: javascriptarraysreactjsecmascript-6

解决方案


首先使用Array.isArray()检查您要映射的项目是否为 Array 类型。

const NewModal = ({item}) => {

    if(Array.isArray(item.modifiers) {
      item.modifiers.map((modifier)=> console.log(modifier.cat_name));
    }
}


推荐阅读