数组去重实际运用

做了一个数组去重的demo;

假如是一个需要展示的数组,然后又一个点击加载更多,或者下拉加载更多,但是每次都会调用数据库的数据,为了减少后台的负荷,我们可以把数据存在缓存里面,这里就涉及到JSON.stringify();和JSON.parse();。我也不知道为什么,缓存的数组读出来的时候都是obj类型的,无法获取到里面的数据,所以需要将其转换成json字符串存储,用到的时候在json解析,然后处理,在转成json'字符串存到缓存里面,所有的数据,只要是需要修改,就要解析 =>转字符串 => 然后缓存。

当然,如果你有更好的办法,当我没说。

demo比较简洁。没那么高大上的样式

<!DOCTYPE html>
<html>

	<head>
		<meta charset="utf-8" />
		<meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
		<title>数组去重</title>
		<style type="text/css">

			table{
				width: 100%;
				text-align: center;
			}
			#foot{
				width: 100%;
				text-align: center;
			}
			#foot button{
				width: 100px;
				height: 50px;
				line-height: 50px;
				text-align: center;
				border-radius: 10px;
				border: 1px solid #ccc;
				font-size: 18px;
			}
			.but{
				padding: 2px;
				border: 1px solid #ccc;
				border-radius: 2px;
			}
		</style>
	</head>

	<body>
		<table border="0" cellspacing="5" cellpadding="5" id="tab">
					
		</table>
		<div id="foot">
		<button onclick="addlist()"> 加载更多</button>
		<button onclick="qclist()"> 去重</button>
		</div>

	</body>
	<script type="text/javascript">
		 window.onload = function () {
            		sethtml();
        		};
        		//设置html
        		function sethtml(){
        			let jsonst, list = [];
        			if(sessionStorage.getItem("list")){
        				let arrlist = sessionStorage.getItem("list");
        				console.log("sethtml",arrlist);
        				console.log("sethtml",typeof arrlist);
        				if(null != arrlist || ""!= arrlist || '' != arrlist){
        					list = JSON.parse(arrlist);
        					console.log("sethtml",list);
        				}
        			console.log("sethtml",list);
					let str = "<tr><th>序号</th><th>ID</th><th>名字</th><th>内容</th><th>操作</th></tr>";
					for (let i = 0; i < list.length; i++) {
						str += "<tr>" +
									"<td>" + (i+1) + "</td>" +
									"<td>" + list[i].id + "</td>" +
									"<td>" + list[i].name + "</td>" +
									"<td>" + list[i].content + "</td>" +
									"<td ><button class='but' onclick='sc("+ i +")'> 删除</button></td>" +
								"</tr>";
					}
					$("tab").innerHTML = str;
					}
        		}
        		//去重的数据处理
        		function qclist(){
        			let jsonst, list = [],list2 = [];
        			jsonst = sessionStorage.getItem("list");
        			console.log("qclist",jsonst);
        			list = JSON.parse(jsonst);
        			list = qc(list);
        			console.log("去重后的list",list);
        			list = JSON.stringify(list);
	        		sessionStorage.setItem("list",list);
        			sethtml();
        		}
        		//去重的专用函数
        		function qc(array) {
					let r = [];
					for(let i = 0, l = array.length; i < l; i++) {
						for(let j = i + 1; j < l; j++)
							if(array[i].id === array[j].id) j = ++i;
						r.push(array[i]);
					}
					return r;
				}
        		//删除函数
        		function sc(i){
        			let jsonst, list = [],list2 = [];
        			jsonst = sessionStorage.getItem("list");
        			console.log("qclist",jsonst);
        			list = JSON.parse(jsonst);
        			list.splice(i,1);
        			list = JSON.stringify(list);
	        		sessionStorage.setItem("list",list);
        			sethtml();
        			
        		}
        		//添加函数
        		function addlist(){
        			let jsonst, list = [],list2 = [],list3 = [];
        			if(sessionStorage.getItem("list")){
        				jsonst = sessionStorage.getItem("list");
        				console.log("addlist jsonst",jsonst);
	        			list = JSON.parse(jsonst);
	        			console.log("addlist list",list);
	        			list3 = setlist();
	        			console.log("addlist list3",list3);
	        			for (let i = 0; i < list3.length; i++ ) {
	        				list.push(list3[i])
	        			}
						console.log("最终 list",list);
	        			list = JSON.stringify(list);
	        			sessionStorage.setItem("list",list);
	        			sethtml();
        			}else{
        				list2 = setlist();
	        			console.log("addlist2 list2",list2);
	        			for (let i = 0; i < list2.length; i++ ) {
	        				list.push(list2[i])
	        			}
	        			list = JSON.stringify(list);
	        			sessionStorage.setItem("list",list);
	        			sethtml();
        			}
        			
        		}
				
				//获取id函数
				function $(id){
					return document.getElementById(id);
				}
			
				//假如是一个ajax
				function setlist(){
					let list = [
					{id:1,name:"你好",stat:1,show:false,content:"就好丰富的地方"},
					{id:2,name:"苦",stat:1,show:false,content:"的好机会"},
					{id:3,name:"没看",stat:1,show:false,content:"都很纠结就"},
					{id:4,name:"用户",stat:1,show:false,content:"大税务师"},
					{id:5,name:"儿童",stat:1,show:false,content:"法发顺丰"},
					{id:6,name:"同意",stat:1,show:false,content:"好几十翁"},
					{id:7,name:"传",stat:1,show:false,content:"采光好和然后"},
					{id:8,name:"支付",stat:1,show:false,content:"让人一日游"},
					{id:9,name:"企鹅",stat:1,show:false,content:"如风达的"},
					{id:10,name:"破",stat:1,show:false,content:"水电费费"},
					]
					
					return list;
					
				}
	
	</script>

</html>

以上就是写的demo了。

后台返回的数据不可能这么简单,但是无论怎么复杂,只要思路没问题,不要被蒙蔽眼睛,那么完全没问题。万变不离其宗。

猜你喜欢

转载自blog.csdn.net/qq_38026437/article/details/84320843