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

React组件中嵌套map判断博客点赞状态出现异常结果的问题

问题解决思路

你的问题出在嵌套使用两层map:每遍历一篇博客,又会遍历一遍所有点赞博客,导致每篇博客会生成和点赞博客数量相同的结果(比如第一篇博客会和2篇点赞博客各比对一次,输出两次“NOT liked”),这就是重复内容的来源。

另外还要注意,React类组件里不能直接在类体中用const定义变量,这是语法错误,得改成类属性或者放到render函数里。

修正后的代码

class Blogs extends React.Component {
  // 定义类属性存储博客数据
  all_blogs = [
    {"blog_title" : "First Blog"},
    {"blog_title" : "Second Blog"},
    {"blog_title" : "Third Blog"},
    {"blog_title" : "Fourth Blog"},
    {"blog_title" : "Fifth Blog"},
  ];

  liked_blogs = [
    {"blog_title" : "Second Blog"},
    {"blog_title" : "Third Blog"},
  ];

  render() {
    // 提前提取所有点赞博客的标题,优化判断效率
    const likedBlogTitles = this.liked_blogs.map(blog => blog.blog_title);
    
    return (
      <div>
        {this.all_blogs.map((blog, index) => {
          // 判断当前博客是否在点赞列表中
          const isLiked = likedBlogTitles.includes(blog.blog_title);
          // 必须给列表元素加key,避免React警告
          return (
            <div key={index}>
              {isLiked ? "This blog is liked" : "This blog is NOT liked"}
            </div>
          );
        })}
      </div>
    );
  }
}

关键改进点

  • 去掉嵌套map,改用includes判断:每篇博客只生成一个结果,解决重复问题
  • 提前提取点赞博客标题数组,比直接比对对象更高效
  • 给map返回的元素添加key属性,符合React列表渲染的要求
  • 修正类组件中变量定义的语法错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 07:09:11