【发布时间】:2020-10-30 23:10:38
【问题描述】:
我有一个函数可以检查 cmets 作者是否是当前的。这个函数返回真或假。
我也有检查这个函数结果的函数,问题是结果函数总是返回真。
有什么建议吗?
const checkCommentAuthor = (): boolean => {
return comments.filter((item: any): boolean => {
if (item.username === localStorage.getItem("username")) {
return true;
} else {
return false;
}
});
};
const checkCommentAuthorResult = (): any => {
let checkResult = checkCommentAuthor();
if (checkResult) {
return <IsCommentAuthor / > ;
} else {
return <IsNotCommentAuthor / > ;
}
};
return checkCommentAuthorResult();
};
【问题讨论】:
-
可能是您的项目没有用户名属性,所以
item.username未定义,localStorage.getItem("username")也未定义 -
您正在使用
filter(),这意味着您的 cmets 数组变为一个较小的数组。因此,如果您有五个 cmets,其中两个是作者的,则该函数返回一个包含两个 cmets 的数组,而不是 true 或 false。数组是真的,所以它总是返回真。我还想知道这通常应该如何工作:您不应该单独检查用户是否是每个评论的作者吗? -
@ChrisG 你能告诉我如何修复它或使用哪种方法吗?
-
我尝试使用地图但得到相同的结果
-
试试
let checkResult = checkCommentAuthor()[0]
标签: javascript reactjs