求标签搜索脚本

回复帖子

@sjx233_ 2021-04-08 14:08 回复 举报

@Okimoto done.

题目列表选择标签后,应该显示“共计 0 条结果”,此时在控制台运行下面的代码,大约 1 分钟后正确的结果会显示在页面上。

(async () => {
  async function* getProblems(options) {
    const params = new URLSearchParams(options);
    let count = Infinity;
    let result = [];
    let perPage = 0;
    for (let i = 0; i * perPage < count; i++) {
      params.set("page", i + 1);
      const res = await fetch(`/problem/list?_contentOnly&${params}`);
      ({ count, result, perPage } = (await res.json()).currentData.problems);
      yield* result;
    }
  }

  const { tag, page, ...options } = _feInstance._route.query;
  const tags = tag ? tag.split("|").map(tag => parseInt(tag, 10)) : [];
  const problems = [];
  for await (const problem of getProblems(options))
    if (tags.every(tag => problem.tags.includes(tag)))
      problems.push(problem);
  const problemsModel = _feInstance.currentData.problems;
  problemsModel.result.splice(0, Infinity, ...problems);
  problemsModel.count = problemsModel.perPage = problems.length;
})();
反馈
如果你认为某个帖子有问题,欢迎向洛谷反馈,以帮助更多的同学。



请具体说明理由,以增加反馈的可信度。