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)
})
第二种方法,无非就是双循环,逐个判断老数组的元素与新数组的原始是不是一样。代码就不写了,也不太推荐
1、给输入名字的文本框绑定一个失去焦点事件,jquery中为focusout事件,同时在文本框后定义一个显示检查结果的span。2、当文本框失去焦点时,调用ajax异步向后台发送请求。
3、将请求结果显示在文本框后面提示用户,避免所有信息填写完毕表单提交时才发现名字重复。
示例:
<input type='text' id='name'/><span id='errorMsg'></erorMsg>
//给文本框绑定一个失去焦点事件
$("#name").focusout(function() {
var name = $("#name").val()
if(name != null &&name != ''){
checkName(name)
}
})
//发ajax请求到后台判断用户名是否重复
function checkName(name){
$.ajax({
url : servletUrl,
type : "post",
dataType : 'JSON',
data : {name:name},
success : function(result) {
//已经存在该名字提示用户
if(result == true){
$("#errorMsg").html("该用户名已经存在")
}else{
$("#errorMsg").html("恭喜您,用户名可以使用")
}
}
},
error : function() {
alert('检查用户是否存在发生错误')
}
})
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)