select选择框option重复问题

本文介绍如何使用Map集合处理后端传来的重复数据,实现在前端下拉选择框中展示无重复的选项,避免了多次加载相同数据的问题,提高了用户体验。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天公司要求根据后端传过来的数据做一个图表,可在选择框选择相应数据进行展示,效果如图所示:
在这里插入图片描述选择指标会出现相对应的图表,但是后台传过来的数据大概是酱紫的,
KPI.json

{"KPI":[{
	"JPIIndexId":1,
	"KPIIndexName":"出院患者占比",
	"KPIValue":3,
	"InputDate": "2020-01-12"
},
{
	"JPIIndexId":2,
	"KPIIndexName":"出院患者手术人数",
	"KPIValue":4,
	"InputDate": "2020-01-12"
},
{
	"JPIIndexId":1,
	"KPIIndexName":"出院患者占比",
	"KPIValue":5,
	"InputDate": "2020-01-13"
},
{
	"JPIIndexId":2,
	"KPIIndexName":"出院患者手术人数",
	"KPIValue":6,
	"InputDate": "2020-01-13"
},
{
	"JPIIndexId":1,
	"KPIIndexName":"出院患者占比",
	"KPIValue":7,
	"InputDate": "2020-01-14"
},
{
	"JPIIndexId":2,
	"KPIIndexName":"出院患者手术人数",
	"KPIValue":8,
	"InputDate": "2020-01-14"
}
]}

其中KPIIndexName就是指标名,但是他有很多重复的。

所以我们在下拉选择框时要避免出现重复数据。正常情况下我们这样写

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>echarts-JSON请求数据</title>
		<!-- <link rel="shortcut icon" href="../js/echarts-2.2.7/doc/asset/ico/favicon.png"> -->
		<script type="text/javascript" src="js/jquery.min.js"></script>
		<script type="text/javascript" src="js/echarts.common.min.js"></script>
		<!-- <script type="text/javascript" src="js/map.js"></script> -->

	</head>
	<body style="background-color: aliceblue;">
		<!-- 出院患者手术占比 -->
		<div>
			<select id="indexId">
				<!-- <option value="">-- 请选择 --</option> -->
			</select>
		</div>
	</body>
	<script>
		$(document).ready(function() {
			var index = $("#indexId");
			$.get('data/KPI.json').done(function(data) {
				console.log(data.KPI);
				console.log("json的值");
				for (var i = 0; i < data.KPI.length; i++) {
					**index.append("<option value='" + data.KPI[i].JPIIndexId + "'>" + data.KPI[i].KPIIndexName + "</option>");**
				}
			});
		});
	</script>
</html>

他的效果是这样的:
在这里插入图片描述处理重复数据时,我们借助map来实现

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>echarts-JSON请求数据</title>
		<!-- <link rel="shortcut icon" href="../js/echarts-2.2.7/doc/asset/ico/favicon.png"> -->
		<script type="text/javascript" src="js/jquery.min.js"></script>
		
	</head>
	<body style="background-color: aliceblue;">
		<!-- 出院患者手术占比 -->
		<div>
			<select id="indexId">
				<!-- <option value="">-- 请选择 --</option> -->
			</select>
		</div>
	</body>
	<script>
		$(document).ready(function() {
			var index = $("#indexId");
			var map = new Map();
			$.get('data/KPI.json').done(function(data) {
				for (var i = 0; i < data.KPI.length; i++) {
					map.set(data.KPI[i].JPIIndexId, data.KPI[i].KPIIndexName);
				}
				map.forEach(function(value, key, map){
					index.append("<option value='" + key + "'>" + value + "</option>");
				})
				console.log(index);
			});
		});
	</script>
</html>

这段代码就可以帮我们实现目标啦
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值