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

如何高效过滤服务器返回的Tasks数据并适配展示模板?

如何过滤任务数据并适配展示模板?

嘿,我来帮你搞定这个任务数据过滤和模板展示的问题!咱们分两步走:先搞定数据过滤,再把过滤后的数据套进展示模板里。

一、数据过滤:按需筛选你要的任务

你可以根据业务需求设定过滤条件,比如筛选有how_often值的任务、指定stakeholder或project的任务,甚至是排除空字段的任务。下面用JavaScript举几个实用的例子:

1. 过滤包含how_often值的任务

如果只想保留有执行频率标记的任务,可以这么写:

const tasks = [ /* 你的任务数据 */ ];
// 过滤how_often不为空的任务
const filteredTasks = tasks.filter(task => task.how_often?.trim() !== '');

2. 筛选指定stakeholder或project的任务

比如只保留stakeholder为2的任务(你的示例里都是2,换个值也一样):

// 单条件过滤:stakeholder为2
const filteredTasks = tasks.filter(task => task.stakeholder === 2);
// 多条件过滤:stakeholder为2且project为2
const filteredTasks = tasks.filter(task => task.stakeholder === 2 && task.project === 2);

3. 排除所有核心字段为空的任务

如果想去掉那些除了id、title、关联字段外其他都是空的任务,可以自定义判断逻辑:

const filteredTasks = tasks.filter(task => {
  // 检查how_often、how_important_task等字段是否至少有一个非空
  return task.how_often || task.how_important_task || task.how_important_improvement;
});

二、适配展示模板:把数据渲染到页面

假设你用的是前端场景,这里给两种常见的实现方式,你可以根据自己的技术栈调整:

1. 原生JavaScript + HTML模板

先写好HTML模板结构:

<!-- 任务列表容器 -->
<div id="taskList"></div>

<!-- 隐藏的任务模板片段 -->
<template id="taskTemplate">
  <div class="task-item">
    <h3 class="task-title"></h3>
    <p class="task-id"></p>
    <p class="task-frequency" style="display: none;"></p>
    <p class="task-stakeholder"></p>
    <p class="task-project"></p>
    <hr>
  </div>
</template>

然后用JS渲染过滤后的数据:

const taskList = document.getElementById('taskList');
const template = document.getElementById('taskTemplate').content;

filteredTasks.forEach(task => {
  const clone = document.importNode(template, true);
  // 填充基础数据
  clone.querySelector('.task-title').textContent = task.title;
  clone.querySelector('.task-id').textContent = `任务ID: ${task.id}`;
  clone.querySelector('.task-stakeholder').textContent = `关联干系人ID: ${task.stakeholder}`;
  clone.querySelector('.task-project').textContent = `关联项目ID: ${task.project}`;
  
  // 如果有执行频率,显示对应节点
  if (task.how_often) {
    const frequencyEl = clone.querySelector('.task-frequency');
    frequencyEl.textContent = `执行频率: ${task.how_often}`;
    frequencyEl.style.display = 'block';
  }
  
  taskList.appendChild(clone);
});

2. 使用Handlebars模板引擎(更简洁)

先引入Handlebars,然后定义模板:

<script id="taskTemplate" type="text/x-handlebars-template">
  {{#each this}}
  <div class="task-item">
    <h3>{{title}}</h3>
    <p>任务ID: {{id}}</p>
    {{#if how_often}}
      <p>执行频率: {{how_often}}</p>
    {{/if}}
    <p>关联干系人ID: {{stakeholder}}</p>
    <p>关联项目ID: {{project}}</p>
    <hr>
  </div>
  {{/each}}
</script>

然后编译模板并渲染:

const source = document.getElementById('taskTemplate').innerHTML;
const template = Handlebars.compile(source);
const taskList = document.getElementById('taskList');
// 直接把过滤后的数据传入模板渲染
taskList.innerHTML = template(filteredTasks);

核心思路就是先根据业务规则过滤出需要的数据,再把数据字段映射到模板的对应位置——如果你用Vue、React这类框架,只需要把过滤后的数据绑定到组件的列表渲染逻辑里就行啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:49:33