如何按积分过滤API响应数据并分Div展示?求实现代码
没问题,我来帮你搞定这个需求!下面是具体的实现方案,分HTML结构和JavaScript逻辑两部分,你可以直接套用:
实现方案
1. 先准备HTML结构
首先要在页面上定义好两个目标容器,分别用来存放积分大于100和小于100的数据:
<!-- 存放积分>100的数据 --> <div id="largePointsContainer" class="large"></div> <!-- 存放积分<100的数据 --> <div id="smallPointsContainer" class="small"></div>
2. JavaScript逻辑处理
接下来是核心的数据处理和渲染逻辑,我会分步骤说明:
步骤1:处理API返回数据(排序+过滤)
不管你是同步拿到数据还是通过异步请求(比如fetch/axios)获取API响应,都可以按以下流程处理:
// 假设这是你的API返回数据(如果是异步请求,把这段逻辑放到请求成功的回调里) const apiResponse = [ { id: 1, name: "用户A", points: 150 }, { id: 2, name: "用户B", points: 80 }, { id: 3, name: "用户C", points: 200 }, { id: 4, name: "用户D", points: 90 } ]; // 第一步:按积分排序(这里用降序,要升序的话改成 a.points - b.points) const sortedData = apiResponse.sort((a, b) => b.points - a.points); // 第二步:过滤分成两组 // 积分>100的组 const largePointsData = sortedData.filter(item => item.points > 100); // 积分<100的组 const smallPointsData = sortedData.filter(item => item.points < 100);
步骤2:封装渲染函数(复用性更高)
写一个通用的渲染函数,把数据插入到对应的容器里:
function renderItems(containerId, items) { const container = document.getElementById(containerId); // 先清空容器(避免重复渲染) container.innerHTML = ''; items.forEach(item => { // 创建单个数据项的DOM元素 const itemElement = document.createElement('div'); itemElement.className = 'data-item'; // 可以自定义样式类 // 这里可以根据你的需求调整显示内容 itemElement.textContent = `${item.name} - 积分:${item.points}`; container.appendChild(itemElement); }); }
步骤3:执行渲染
最后调用函数把数据渲染到对应的容器里:
renderItems('largePointsContainer', largePointsData); renderItems('smallPointsContainer', smallPointsData);
异步请求的适配示例
如果你的API数据是通过异步请求获取的,比如用fetch,可以这样写:
fetch('你的API接口地址') .then(response => response.json()) .then(apiResponse => { // 这里复用上面的排序、过滤、渲染逻辑 const sortedData = apiResponse.sort((a, b) => b.points - a.points); const largePointsData = sortedData.filter(item => item.points > 100); const smallPointsData = sortedData.filter(item => item.points < 100); renderItems('largePointsContainer', largePointsData); renderItems('smallPointsContainer', smallPointsData); }) .catch(error => console.error('获取API数据失败:', error));
注意: 如果遇到积分等于100的情况,你可以根据需求调整filter的条件,比如改成item.points >= 100,或者单独新增一个容器来存放这部分数据。
内容的提问来源于stack exchange,提问作者Santosh
相关产品推荐
相关产品推荐

