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

JavaScript遍历对象后向数组添加单个对象的问题求助

如何在JavaScript中仅将一个对象插入数组(遍历对象时避免重复添加)

你希望将对象转换为指定结构后仅插入数组一次,但当前代码执行后数组中出现了两个重复对象。

现有代码:

//My Object:

var raw_data = {
  name: "Mike",
  age: "27",
};

var array_data = [];

//Then I loop through the object:

for (let [key, name] of Object.entries(raw_data)) {
  if (name !== "") {
    array_data.push({
      email: `${raw_data.name}`,
      password: `${raw_data.age}`,
    });
  }
}
console.log(array_data);

当前输出:

[
  { email: 'nang@gmail.com', password: '1234567' },
  { email: 'nang@gmail.com', password: '1234567' }
]

期望输出:

[
  { email: 'nang@gmail.com', password: '1234567'}
]

问题原因

你当前代码的问题在于使用Object.entries(raw_data)遍历对象时,raw_data包含2个键值对,循环会执行2次,每次都会向数组中push同一个对象,最终数组里就有2个重复的元素。

解决方案

方案1:直接判断所需字段(推荐)

如果你的需求是将raw_data的name和age转换为email和password的结构并仅添加一次,不需要遍历整个对象,直接检查目标字段是否非空后添加即可:

var raw_data = {
  name: "Mike",
  age: "27",
};

var array_data = [];

// 检查name和age是否非空,满足条件则添加一次对象
if (raw_data.name !== "" && raw_data.age !== "") {
  array_data.push({
    email: raw_data.name,
    password: raw_data.age
  });
}

console.log(array_data);

方案2:遍历检查所有字段(如需验证全部字段非空)

如果你需要确保raw_data的所有字段都非空才添加对象,可以先遍历验证,再添加一次:

var raw_data = {
  name: "Mike",
  age: "27",
};

var array_data = [];
var allFieldsValid = true;

// 遍历所有字段,检查是否存在空值
for (let [key, value] of Object.entries(raw_data)) {
  if (value === "") {
    allFieldsValid = false;
    break; // 发现空值立即停止遍历
  }
}

// 所有字段都非空时,添加一次对象
if (allFieldsValid) {
  array_data.push({
    email: raw_data.name,
    password: raw_data.age
  });
}

console.log(array_data);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 00:20:10