js中如何去除list中的重复数据

JavaScript07

js中如何去除list中的重复数据,第1张

最笨的方法:

var list = [1, 2, 3, 6, 7, 8, 9, 1, 2, 3, 6]//有重复的数组

var obj = {}//用于标记字符串

var arr = []//去掉重复后的数组

for (var i = 0, len = list.length i < len i++) {

    var s = list[i]

    if (obj[s]) continue//如果字符串已经存在就跳过

    else {

        obj[s] = s//加入标记对象中

        arr.push(s)//结果放入新数组中

    }

}

当jquery中有封装好的去重复方法,还有其他第三方js插件也存在去重复的方法。

用循环做. 把代码复制进一个html文件中在浏览器打开点击某一个li就可以看到效果了

<html>

<head>

<meta http-equiv="Content-Type" content="text/html charset=utf-8" />

<title>无标题文档</title>

</head>

<body>

<div id="list">

<li class="a1">第一个</li>

<li class="a12">第二个</li>

<li class="a13">第三个</li>

<li class="a14">第四个</li>

<li class="a51">第五个</li>

<li class="a16">第六个</li>

</div>

</body>

<script>

function js(id){ return document.getElementById(id) }

var li = js("list").getElementsByTagName("li").length

for(var i=0i<lii++)

{

js("list").getElementsByTagName("li")[i].onclick = function(){

this.remove()

}

}

</script>

</html>

JS中没有删除数组的现有方法,需要靠自己写,我这里提供点思路和例子供参考

splice 方法

从一个数组中移除一个或多个元素,如果必要,在所移除元素的位置上插入新元素,返回所移除的元素。

arrayObj.splice(start, deleteCount, [item1[, item2[, . . . [,itemN]]]])

删除数组

方法一

/*

* 方法:Array.remove(dx) 通过遍历,重构数组

* 功能:删除数组元素.

* 参数:dx删除元素的下标.

*/

Array.prototype.remove=function(dx)

{

if(isNaN(dx)||dx>this.length){return false}

for(var i=0,n=0i<this.lengthi++)

{

if(this[i]!=this[dx])

{

this[n++]=this[i]

}

}

this.length-=1

}

a = ['1','2','3','4','5']

alert("elements: "+a+"\nLength: "+a.length)

a.remove(1)//删除下标为1的元素

alert("elements: "+a+"\nLength: "+a.length)

</script>

方法二

/*

* 方法:Array.baoremove(dx)

* 功能:删除数组元素.

* 参数:dx删除元素的下标.

* 返回:在原数组上修改数组.

* splice方法见http://www.w3school.com.cn/js/jsref_slice_array.asp

*/

Array.prototype.baoremove = function(dx)

{

if(isNaN(dx)||dx>this.length){return false}

this.splice(dx,1)

}

b = ['1','2','3','4','5']

alert("elements: "+b+"\nLength: "+b.length)

b.baoremove(1)//删除下标为1的元素

alert("elements: "+b+"\nLength: "+b.length)

</script>