You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用JavaScript验证数组中是否存在重复键值

解决重复ID数据添加问题

你的问题出在判断重复ID的逻辑上——people是一个数组,不是单个对象,直接用people["idperson"]根本取不到任何有效数据,这个判断条件永远为true,所以不管ID是否重复都会把数据推进数组里。

我们可以用数组的some()方法来检查数组中是否已经存在相同idperson的元素,它会遍历数组,只要有一个元素满足条件就返回true,否则返回false。

修正后的代码如下:

<div class="form"> 
  <input type="text" id="idperson" placeholder="输入ID">
  <input type="text" id="name" placeholder="输入姓名"> 
  <button id="add" type="button">ADD</button> 
</div> 
<script src="https://code.jquery.com/jquery-1.12.0.min.js"></script> 
<script> 
var people = []; 

$("#add").click(function(){ 
  var iduser = $("#idperson").val().trim(); // 去除前后空格,避免无效空字符
  var name = $("#name").val().trim();

  // 先做非空验证,提升用户体验
  if(!iduser || !name) {
    alert("ID和姓名不能为空!");
    return;
  }

  // 检查数组中是否已存在相同ID的元素
  var isDuplicate = people.some(function(person) {
    return person.idperson === iduser;
  });

  if(!isDuplicate){ 
    people.push({idperson:iduser, nameperson:name}); 
    alert("添加成功!");
  } else {
    alert("该ID已存在,请勿重复添加!");
  }

  console.log(people); 
}); 
</script>

关键逻辑说明:

  1. 输入预处理:用.trim()去除输入内容的前后空格,避免用户误输入空格导致的无效数据。
  2. 非空校验:先检查ID和姓名是否为空,避免无意义的空数据添加。
  3. 重复判断:people.some(...)遍历数组中的每个person对象,对比idperson值,只要有匹配项就标记为重复。
  4. 分支处理:无重复则添加数据并提示成功,有重复则提示用户避免重复操作。

如果需要兼容更老旧的浏览器,也可以用for循环来实现重复判断:

// 替代some()的for循环写法
var isDuplicate = false;
for(var i=0; i<people.length; i++){
  if(people[i].idperson === iduser){
    isDuplicate = true;
    break; // 找到重复项就停止遍历,提升效率
  }
}

这样就能有效避免重复ID的数据被添加到数组里了。

内容的提问来源于stack exchange,提问作者NekoLopez

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 06:50:05