javascript 如何让else语句返回一行

b1zrtrql  于 2023-02-21  发布在  Java
关注(0)|答案(2)|浏览(502)

我正在尝试返回一个显示用户例程的页面。我希望向用户显示一条消息,说明他们没有任何make例程。问题出在我的else语句中,我只能返回console.error。如果我执行一些HTML,它将返回我发送的整个例程数组。我只希望它返回一个"未找到活动,请在上面创建一个"。

routines.map((routine) => {

                    if (currentUser === routine.creatorName) {
                        return (
                            <div className="routineCard">
                                <h3>Routines</h3>
                                <p>Name: {routine.name}</p>
                                <p>goal: {routine.goal}</p>
                                <p>User: {routine.creatorName}</p>
                                <ul > Activities
                                    <li className="routineActivityCards">{
                                        routine.activities.map((activity) => {
                                            return (
                                                <div className="routineActivityCard">
                                                    <ul>
                                                        <h5>{activity.name}</h5>
                                                        <p>Info: {activity.description}</p>
                                                        <p>Count: {activity.count}</p>
                                                        <p>Duration: {activity.duration}</p>
                                                    </ul>
                                                </div>
                                            )
                                        }
                                        )
                                    }</li>
                                </ul>
                            </div>
                        )
                    } else {
                        return console.error;
                    }
                })
return (
    <div>
        <h1>No activites found</h1>
    </div>
)

我把这个放进else它返回

No activites found
No activites found
No activites found
No activites found etc...

也许我可以把我的return设置为只返回例程[0]?我只是不知道如何准确地把它写进我的代码中。谢谢大家的帮助!

agxfikkp

agxfikkp1#

首先,filter数组以获取所有匹配的条目。如果结果的长度为0,则显示消息。

let matching = routines.filter(routine => routine.creatorName === currentUser);
// use in JSX:
{ matching.length ? matching.map(routine => (
        /* return JSX here */
)) : "No activities found" }
hlswsv35

hlswsv352#

只需添加一个try-catch语句,这样就可以中断Array.prototype.map()方法(它本身不支持break关键字)生成的循环。

try {
    routines.map((routine) => {
        if (currentUser === routine.creatorName) {
            return(...your code...)
        } else {
            throw 0
        }
    }
} catch(e) {
    ...your code...
}

另一种方法(也许是最简单的方法)是使用“normal”循环,它支持break关键字,方法如下:

for (let routine of routines) {
    if (currentUser === routine.creatorName) {
        ...your code...
    } else {
        ...your code...
        break
    }
}

**当地雇员

相关问题