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

JavaScript技术问题:数组推入子数组及循环生成指定JSON结构

嘿,我来帮你搞定这两个JavaScript问题!

1. 如何在JavaScript中向一个数组内部推入另一个数组?

根据你想要的效果,有几种实用的方法可选:

  • 把另一个数组的元素逐个添加到目标数组(最常用)
    推荐用ES6+的展开运算符,写法简洁直观:

    const targetArr = [1, 2, 3];
    const sourceArr = [4, 5, 6];
    targetArr.push(...sourceArr); // targetArr 现在变成 [1,2,3,4,5,6]
    

    如果你不想修改原数组,可以用concat方法生成新数组:

    const targetArr = [1, 2, 3];
    const sourceArr = [4, 5, 6];
    const newArr = targetArr.concat(sourceArr); // newArr 是 [1,2,3,4,5,6],原数组不变
    
  • 把整个数组作为单个元素推入
    直接用push方法即可,此时目标数组会多一个数组类型的元素:

    const targetArr = [1, 2, 3];
    const sourceArr = [4, 5, 6];
    targetArr.push(sourceArr); // targetArr 现在是 [1,2,3,[4,5,6]]
    
2. 循环生成指定格式的JavaScript对象(你示例的结构)

先拆解你要的目标结构:一个包含people数组的对象,每个people元素有pic、name、role字段,还有嵌套的appointments数组(每个预约包含start、end(Date对象)和title)。

我们可以通过定义数据源,再循环遍历生成目标结构,示例代码如下:

// 模拟你的原始数据源(可以替换成从接口获取的真实数据)
const rawData = [
  {
    name: "Ravi",
    role: "team member",
    pic: "sap-icon://employee",
    bookings: [
      { startStr: "2017-01-21", endStr: "2017-01-21", title: "Meet John Miller" },
      { startStr: "2017-01-18", endStr: "2017-01-18", title: "Team meeting" }
    ]
  },
  // 可以添加更多人员数据
  {
    name: "Luna",
    role: "designer",
    pic: "sap-icon://employee",
    bookings: [
      { startStr: "2017-02-03", endStr: "2017-02-03", title: "UI review" },
      { startStr: "2017-02-08", endStr: "2017-02-08", title: "Prototype demo" }
    ]
  }
];

// 初始化目标对象
const payloadTest = { people: [] };

// 循环生成结构
rawData.forEach(person => {
  // 处理预约数据,把字符串转成Date对象
  const formattedAppointments = person.bookings.map(booking => ({
    start: new Date(booking.startStr),
    end: new Date(booking.endStr),
    title: booking.title
  }));

  // 把处理好的人员信息推入people数组
  payloadTest.people.push({
    pic: person.pic,
    name: person.name,
    role: person.role,
    appointments: formattedAppointments
  });
});

console.log(payloadTest);

运行这段代码后,就能得到你需要的格式啦。如果你的数据源是动态的,只需要替换rawData为你的实际数据即可。

注意:你示例里的结构是JavaScript对象,不是严格的JSON(JSON不支持new Date()这种构造函数)。如果最终需要转成JSON字符串,记得把Date对象转成ISO字符串(比如new Date().toISOString())。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:27:23