1、通过正则判断。
var ary = new Array("111","ff","222","aa","222")
alert(mm(ary))
// 验证重复元素,有重复返回true;否则返回false
function mm(a){return /(\x0f[^\x0f]+)\x0f[\s\S]*\1/.test("\x0f"+a.join("\x0f\x0f") +"\x0f")}
2、通过数组排序,比较临近元素,可指出重复的元素。
var ary = new Array("111","22","33","111","22")
var nary = ary.sort()
for(var i = 0i <nary.length - 1i++){
if (nary[i] == nary[i+1]){alert("重复内容:" + nary[i])}
}
3、通过字符串查找。
var ary = new Array("111","22","33","111","22")
var s = ary.join(",") +","
for(var i = 0i <ary.lengthi++){
if(s.replace(ary[i] + ",", "").indexOf(ary[i] +",") >-1){alert("重复内容:" + ary[i])}
}
4、通过哈希
var ary = new Array("111","22","33","111","22")
alert(isRepeat(ary))// 验证重复元素,有重复返回true;否则返回false
function isRepeat(arr) {
var hash = {}
for(var i in arr) {
if(hash[arr[i]]){return true}
// 不存在该元素,则赋值为true,可以赋任意值,相应的修改if判断条件即可
hash[arr[i]] = true}
return false
}
无论jquery和原生js,去除重复数据都没有直接的方法。方法无非是下面两个:第一、根据json数据字段的唯一性
var a = ["a","ss","a","c"],b={}
$.each(a,function(i,val){
if (b[val]) a.splice(i,1)
})
第二种方法,无非就是双循环,逐个判断老数组的元素与新数组的原始是不是一样。代码就不写了,也不太推荐
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)