使用关联数组去掉重复那个的项!

昨天尝试了使用关联数组找出出现次数最多的项,今天就反向思维去掉重复的项。

昨天对关联数组的定义还是不是很清楚。今天看了看百科,算是明白了:

关联数组和数组类似,由以名称作为键的字段和方法组成。

它包含标量数据,可用索引值来单独选择这些数据,和数组不同的是, 关联数组的索引值不是非负的整数而是任意的标量。这些标量称为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;
}


测试成功!

经过今天和昨天觉得关联数组真是判断重复的好帮手啊,不过就不清楚这是不是最佳方法?有待以后继续研究。

 

 

posted @ 2014-03-01 12:54  PiLee  阅读(320)  评论(0编辑  收藏  举报