代码及注释:
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();
});