javascript - .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: "",
},
],
},
];
解决方案
首先使用Array.isArray()检查您要映射的项目是否为 Array 类型。
const NewModal = ({item}) => {
if(Array.isArray(item.modifiers) {
item.modifiers.map((modifier)=> console.log(modifier.cat_name));
}
}
推荐阅读
- java - 不使用 apache poi、ms-word 复制表格边框
- java - Java面板水平翻转
- string - 遍历字符串失败并出现 StringIndexError
- r - 如何使用 R 中的 geom_bar 为不同颜色的一列(数据框中的值属于一行)着色(填充)?
- css - Bootstrap CSS 未在 Web 服务器上使用 Grav 加载
- c# - XML 文件 - 两个版本 - 相同数据 - 元素属性 + 名称更改
- elasticsearch - 从 Elastic Search 的索引中删除现有字段
- excel - 通过用户输入在另一个电子表格上查找行并复制行
- python - 如何直接运行 Python 包的主脚本?
- android - SQLDelight 插件错误