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

使用for循环向JS数组推入对象时出现大量重复项求助

问题原因

你的代码每次点击按钮时,都会遍历firstNameArr的所有元素,把每一组姓名对象重新推入pairedArray,导致每次新增都会重复之前所有的条目。另外你还漏掉了获取姓氏输入框的值并更新lastNameArr的逻辑。

解决方案

只需要在每次点击时,将当前输入的名和姓组成一个新对象,直接添加到pairedArray即可,不需要循环整个数组。同时补充姓氏输入的处理逻辑:

let pairedArray = [];
let firstNameArr = [];
let lastNameArr = [];

function addMe(){
  // 获取两个输入框元素
  let firstNameInputElem = document.querySelector('.js-firstName');
  let lastNameInputElem = document.querySelector('.js-lastName');
  
  // 获取并过滤输入值
  const firstName = firstNameInputElem.value.trim();
  const lastName = lastNameInputElem.value.trim();
  
  // 避免添加空值条目
  if (!firstName || !lastName) return;
  
  // 更新单元素数组
  firstNameArr.push(firstName);
  lastNameArr.push(lastName);
  
  // 直接创建新的关联对象并添加到目标数组
  const nameObject = {
    fname: firstName,
    lname: lastName
  };
  pairedArray.push(nameObject);
  
  // 清空输入框
  firstNameInputElem.value = '';
  lastNameInputElem.value = '';
  
  console.log(pairedArray);
}
<input type="text" class="js-firstName" placeholder="First Name">
<input type="text" class="js-lastName" placeholder="Last Name">
<button class="js-add" onclick="addMe()">Add to Object</button>
补充说明

如果后续需要同步两个单数组的所有元素生成关联对象(比如修改历史条目后重新生成),也可以采用先清空pairedArray再重新遍历生成的方式,但这种方式效率不如直接添加新元素:

function addMe(){
  let firstNameInputElem = document.querySelector('.js-firstName');
  let lastNameInputElem = document.querySelector('.js-lastName');
  
  const firstName = firstNameInputElem.value.trim();
  const lastName = lastNameInputElem.value.trim();
  
  if (!firstName || !lastName) return;
  
  firstNameArr.push(firstName);
  lastNameArr.push(lastName);
  
  // 清空旧数据后重新生成所有关联对象
  pairedArray = [];
  for (let i = 0; i < firstNameArr.length; i++){
    pairedArray.push({
      fname: firstNameArr[i],
      lname: lastNameArr[i]
    });
  }
  
  firstNameInputElem.value = '';
  lastNameInputElem.value = '';
  
  console.log(pairedArray);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 05:07:15