javascript數組去重

字典去重:

function delrep2() {
    var n = {}
    ,   r = []

    this.forEach(function(v){
        if (!n[v]) {
            n[v] = true
            r.push(v)
        }
    })
    return r
},

可是使人遺憾的是,這個方法是有bug的:你把全部的元素都轉化成字典的鍵值key,也就是字符串,那必然會出現1和'1'的問題ajax

1、jQuery.unique

使用jQuery unique 函數去重,適用於已引入jQuery庫的童鞋
語法:數組

jQuery.unique( array )

 

示例:函數

var arr=["start", "1", "2", "1", "dsfsd", "4", "3", 3, "4", 4, "end", 5]
console.log(jQuery.unique( arr )) //["start", "end", "dsfsd", 5, 4, "4", 3, "3", "2", "1"]

2、自定義函數

如下方法提取自jQuery,實現原理:對數組排序,判斷相鄰的值是否相等
源代碼:this

Array.prototype.unique = function(){
	var results=this.sort()
	for ( var i = 1; i < results.length; i++ ) {
		if ( results[i] === results[ i - 1 ] ) {
			results.splice( i--, 1 );
		}
	}
	return results;
}

示例:spa

var arr=["start", "1", "2", "1", "dsfsd", "4", "3", 3, "4", 4, "end", 5]
console.log(arr.unique()) //["1", "2", "3", 3, "4", 4, 5, "dsfsd", "end", "start"]

更多:
http://www.ituring.com.cn/article/49791
http://www.111cn.net/wy/js-ajax/45241.htm
相關文章
相關標籤/搜索