使用关联数组去掉重复那个的项!
昨天尝试了使用关联数组找出出现次数最多的项,今天就反向思维去掉重复的项。
昨天对关联数组的定义还是不是很清楚。今天看了看百科,算是明白了:
关联数组和数组类似,由以名称作为键的字段和方法组成。
它包含标量数据,可用索引值来单独选择这些数据,和数组不同的是, 关联数组的索引值不是非负的整数而是任意的标量。这些标量称为Keys,可以在以后用于检索数组中的数值。
关联数组的元素没有特定的顺序,你可以把它们想象为一组卡片。每张卡片上半部分是索引而下半部分是数值。
JavaScript的对象本质就是一个关联数组。
先写一个简单的方法测试下
var arr=['b','b','c','a','b','c','d','e','d']; var obj={}; for(var i=0;i<arr.length;i++) { var key=arr[i]; if(!obj[key]) { obj[key]=1; } else { arr.splice(i,1); } } document.write(arr);
splice()方法,温习下就是i是位置,1是个数,另外后面还可以加个'xxx'替换那个位置的项。
输出结果:
b,c,a,c,d,e
下面做个伪报名系统练练手
HTML部分,搓搓的
姓名:<input name="person"/> <button id="btnSubmit">报名</button> <button id="btnMenu">名单</button> <div id="divShow"></div>
下面编写JS
var _person=document.getElementsByName("person")[0]; var btnSubmit=document.getElementById("btnSubmit"); var btnMenu=document.getElementById("btnMenu"); var divShow=document.getElementById("divShow"); var arr=[]; var obj={}; btnSubmit.onclick=function() { var key=_person.value; if(key===null||key==="") { alert('请输入'); } else{ if(!obj[key]) { obj[key]=1; arr.push(key); alert('报名成功'); } else { alert('你已经报名过了'); } } } btnMenu.onclick=function() { var str=""; for(var i=0,l=arr.length;i<l;i++) { str+=arr[i]+" "; } divShow.innerHTML=str; }
测试成功!
经过今天和昨天觉得关联数组真是判断重复的好帮手啊,不过就不清楚这是不是最佳方法?有待以后继续研究。