jquery 判断数组中是否有重复值

如题所述

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 = 0; i < nary.length - 1; i++){

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 = 0; i < ary.length; i++){

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;

}

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-11-22

JS判断一个数组中是否有重复值的三种方法


方法一: 

//将数组转换成字符串,遍历数组,移除一个元素後若还能找到该元素,那么这个元素就是重复的
var s = ary.join(",")+",";
for(var i=0;i<ary.length;i++) {
    if(s.replace(ary[i]+",","").indexOf(ary[i]+",")>-1) {
    alert("数组中有重复元素:" + ary[i]);
    break;
    }
}



方法二: 


//对数组进行排序,查上一个和下一个是否相等
var ary = new Array("111","22","33","111");
var nary=ary.sort();
for(var i=0;i<ary.length;i++){
   if (nary[i]==nary[i+1]){
   alert("数组重复内容:"+nary[i]);
   }
}


方法三: 


//以数组值为键,持续向一个对象里面加值,
//如果在加值之前就发现这个属性在对象中已经存在,那么他就是重复的
function isRepeat(arr){
   var hash = {};
   for(var i in arr) {
      if(hash[arr[i]])
        return true;
      hash[arr[i]] = true;
  }
  return false;
}


 

以上是简单类型数据数组的重复校验方法,若数组的元素为对象,处理方式就需要变化一下,取关键属性作为依据 

本回答被提问者采纳

jquery 判断数组中是否有重复值
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、通过数组排序,...

jquery判断数组是否有相同的元素
jQuery好像没有这种方法,只有最笨的方法,用obj的键值对做标记:var arr=[1,2,3,4,1];var obj={};for(var i=0;i<arr.length;i++){ var str=arr[i]; if(obj[str]){ alert("存在相同元素"); }else{ obj[str]=str;\/\/存入对象中做标记 }}或者用正则表达式:\/...

jquery如何去除表中重复的数据
无论jquery和原生js,去除重复数据都没有直接的方法。方法无非是下面两个:第一、根据json数据字段的唯一性 var a = ["a","ss","a","c"],b={};.each(a,function(i,val){ if (b[val]) a.splice(i,1);});第二种方法,无非就是双循环,逐个判断老数组的元素与新数组的原始是不是...

js中如何判断数组中是否含有某一项?
在JavaScript中,判断数组是否包含某一项可以采用多种方法。首先,利用jQuery的inArray()函数,它查找数组中是否存在指定值,返回值的索引或-1表示未找到。其调用方式为$.inArray(value, array)。例如:javascript var array = [1, 2, 3];if ($.inArray(2, array) !== -1) { console.log('...

jquery判断数组是否包含
function contain(Array,s){ for(var i=0;i<Array.length;i++)if(Array[i] == s)return "checked=checked";return " ";} Array是数组,s是要判断的是否包含的值。

jquery中append(),判断“名字”一样。append()则不重复添加。【有图...
你可以给每条记录加一个唯一标识,然后在append之前通过唯一表示校验,比如:var id = 3, html;if ($('[data-id="' + id + '"]').length === 0) { html = ''; $('ul').append(html);}

JS中如何判断数组中是否包含某一元素
可以直接使用数组的indexOf方法来判断,如果元素存在于数组中,那么返回元素在数组中的下标值,如果不存在,那么返回-1,但是该方法在某些版本的IE中是不起作用,所以建议使用jquery的inArray方法,该方法返回元素在数组中的下标,如果不存在与数组中,那么返回-1,代码如下所示:\/** * 使用jquery的in...

jquery怎么判断值是否存在于数组中
var arr = [ 4, "Pete", 8, "John" ];jQuery.inArray("John", arr); \/\/3jQuery.inArray(4, arr); \/\/0jQuery.inArray("David", arr); \/\/-1jQuery.inArray("Pete", arr, 2); \/\/-1

js中如何判断数组中是否含有某一项?
一、JQuery 如果是用JQuery的话,可以用inArray()函数:jquery inarray()函数详解jquery.inarray(value,array)确定第一个参数在数组中的位置(如果没有找到则返回 -1 )。determine the index of the first parameter in the array (-1 if not found).返回值jquery参数value (any) : 用于在数组中...

jquery如何输出数组中某个特定值
我有更好的答案推荐于2018-03-08 11:48:51 最佳答案 jQuery使用$.inArray(val,array)方法判断值是否存在于数组中; 解释: 确定第一个参数在数组中的位置, 从0开始计数(如果没有找到则返回 -1 ). indexOf()返回字符串的首次出现位置,而$.inArray()返回的是传入参数在数组中的位置,同样的,如果找到的,...

相似回答