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

如何将dummy数据对象数组循环合并至MongoDB返回的用户对象数组

合并MongoDB用户数组与循环复用的模拟数据数组

嘿,这事儿其实不难!你需要的就是遍历用户数组时循环复用dummyData里的对象,核心是用「取模运算」来实现循环,下面给你两种常用的实现方式:

方法一:使用Array.map()(更简洁的函数式写法)

map方法天生适合这种遍历数组并返回新数组的场景,代码可读性很高:

let users = [ 
  { name: "John", lastName: "Henry" }, 
  { name: "Peter", lastName: "Pumpkin" }, 
  { name: "John", lastName: "Snow"}, 
  { name: "Jack", lastName: "Stevens"} 
];

let dummyData = [ 
  { callTime: "Call Now", userType: "End User(Agent)", callStatus: "Called", orderStatus: "Order Placed(1)", consultant: "Bennie Hennie", company: "Some Company" }, 
  { callTime: "Call Now", userType: "End User(James Bond)", callStatus: "Pending Call", orderStatus: "No Order Placed", consultant: "Sally Sue", company: "Super Sonic & Co" }, 
  { callTime: "Call Now", userType: "End User(Peter Griffin)", callStatus: "Called", orderStatus: "Order Placed(1)", consultant: "Jenny Oldstone", company: "Witcher School" } 
];

// 合并数组,循环复用dummyData
const mergedUsers = users.map((user, index) => {
  // 用取模运算获取循环的dummyData索引:当index超过dummyData长度时,从头开始
  const dummyIndex = index % dummyData.length;
  // 扩展运算符合并两个对象,dummyData的字段会覆盖user里同名的(如果有的话)
  return { ...user, ...dummyData[dummyIndex] };
});

console.log(mergedUsers);

方法二:使用for循环(你提到的传统写法)

如果你更习惯for循环,逻辑是一样的,只是写法不同:

const mergedUsers = [];
const dummyLength = dummyData.length;

for (let i = 0; i < users.length; i++) {
  const dummyIndex = i % dummyLength;
  // 合并对象,这里也可以用Object.assign({}, users[i], dummyData[dummyIndex])
  const mergedUser = { ...users[i], ...dummyData[dummyIndex] };
  mergedUsers.push(mergedUser);
}

console.log(mergedUsers);

关键逻辑解释

  • index % dummyData.length:这是实现循环复用的核心。比如当i=3(第4个用户),3%3=0,就会取dummyData的第0个元素;i=4时,4%3=1,取第1个元素,以此类推,完美实现循环。
  • 对象合并:用{...a, ...b}扩展运算符可以把两个对象的属性合并成一个新对象,避免修改原有的users或dummyData数组(如果需要保留原数据的话)。如果你的项目环境不支持ES6扩展运算符,也可以用Object.assign({}, user, dummyItem)来实现同样的效果。

合并后的结果示例

第一个用户的合并结果和你期望的完全一致:

{
  name: "John",
  lastName: "Henry",
  callTime: "Call Now",
  userType: "End User(Agent)",
  callStatus: "Called",
  orderStatus: "Order Placed(1)",
  consultant: "Bennie Hennie",
  company: "Some Company"
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 14:44:09