在字符串中或者在数组中判断是否有重复记录

问题:
前两天因为需求的问题,页面的一个文本框内的内容需要添加多条记录。
但是这些记录在后台又要分批的保存。
这样就需要我把文本中的内容取出来,在前台做一个校验,如果其中有重复的记录,给出一个提示信息。
下面给出三种解决方案:
方法一:

  var ary = new Array("111","22","33","111");

  var s = ary.join(",")+",";

  for(var i=0;i

  {

  if(s.replace(ary[i]+",","").indexOf(ary[i]+",")>-1)

  {

  alert("有重复!");

  }

  }

  方法二:

  var ary = new Array("111","22","33","111");

  var nary=ary.sort();

  for(var i=0;i

  {if (nary[i]==nary[i+1])

  {alert("重复内容:"+nary[i]);}

  }

  方法三:

  var hash = {};

  for(var i in arr) {

  if(hash[arr[i]])

  return true;

  hash[arr[i]] = true;

  }

  return false;
[b]我的实现方式,采用第一种:[/b]
var s = rn.join(",")+",";
for(var i = 0;i<rn.length; i++){
if(s.replace(rn[i]+",","").indexOf(rn[i]+",")>-1)
  {
   alert("填写内容重复!");
return;
  }
}
在JavaScript,要判断一个二维数组中有多少元素重复的,首先需要定义“重复”的含义。在这个上下文,我们可以假设如果两个二维数组中元素位置和值都相同,则认为它们是重复的。 为了实现这个功能,我们可以使用一个哈希表(例如一个对象)来记录每一个二维数组元素出现的次数。然后遍历整个二维数组,对于每一个子数组,将其转换为一个字符串或者一个特定的格式化表示,然后在哈希表记录这个表示出现的次数。如果发现某个表示的次数大于1,那么就意味着有重复的二维数组元素。 以下是实现这个功能的代码示例: ```javascript function countTwoDimensionArrayDuplicates(twoDimArray) { const elementsCount = {}; for (const subArray of twoDimArray) { const subArrayStr = subArray.join('|'); // 将子数组转换为字符串 if (elementsCount.hasOwnProperty(subArrayStr)) { elementsCount[subArrayStr] += 1; } else { elementsCount[subArrayStr] = 1; } } let duplicatesCount = 0; for (const key in elementsCount) { if (elementsCount[key] > 1) { duplicatesCount += elementsCount[key] - 1; // 每个重复元素多算了1次,所以要减去1 } } return duplicatesCount; } // 示例使用 const twoDimArray = [[1, 2], [3, 4], [1, 2], [5, 6], [3, 4]]; const duplicates = countTwoDimensionArrayDuplicates(twoDimArray); console.log(duplicates); // 输出重复的二维数组元素数量 ``` 在上述代码,我们首先定义了一个函数`countTwoDimensionArrayDuplicates`,它接收一个二维数组作为参数。然后,我们创建了一个对象`elementsCount`来记录每个子数组出现的次数。对于每个子数组,我们通过将其元素使用`join`方法转换为一个由竖线分隔的字符串来创建一个唯一的标识,然后在`elementsCount`记录它出现的次数。最后,我们遍历`elementsCount`对象,累加所有出现次数大于1的元素的出现次数(减去1是因为每个元素在每次出现时都多计算了一次)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值