web蓝桥杯真题:个性化推荐

 代码及注释:

req.on("end", () => {
      let { interested = [] } = qs.parse(body);
      // TODO: 补充个性化页面处理代码
      let customizedPage = fs.readFileSync(path.join(__dirname, "../customized.html"), {
        encoding: "utf8",
      });
      let html = ``;
      let resSet = new Set();   //创建Set实例, 作用:去重
      if(!interested.length){
          html=`<div class="unselect">你还未选择任何感兴趣的标签!</div>`
      } else {
        // 这里注意!!!当元素只有一个时,interested为字符串,而不是数组,为了能够使用数组方法,在,这里需要进行数组判断
        interested = Array.isArray(interested) ? interested : [interested] 
        data.forEach(val => {    //在data中循环找到interested元素并且加入resSet
         interested.forEach(item => {    
          if(val.tag == item) {    
            resSet.add(val.tag)
            val.relevance.forEach(ele => {   //循环元素的关键字relevance,加入resSet
              resSet.add(ele)
            })
          }
         })
        })
        data.forEach(val => {    
          resSet.forEach(item => {
            if(val.tag == item)    //在data中循环找到元素并将tag和content拼接
              html += `<div class="interest">
                <div class="tag">${val.tag}</div>
                <div>${val.content}</div>
              </div>`
          })
        })
      }
        //将拼接好的字符串替代
      customizedPage = customizedPage.replace('<body></body>',`<body>${html}</body>`)
      res.writeHead(200, { "Content-Type": "text/html" });
      res.write(customizedPage);
      res.end();
    });
  • 7
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值