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

JavaScript如何将奇偶交替的日程数组转换为指定结构的对象数组

问题分析
  • 赋值逻辑错误:代码中直接把循环索引i赋值给day和exercise属性,没有从原数组WorkList1中读取对应位置的实际值。
  • 对象引用问题:仅在循环外部声明了一次object对象,JS中对象为引用类型,每次修改都是操作同一个内存地址的对象,最终数组中所有元素都会指向同一个对象,值为最后一次修改的结果。
  • 推入时机错误:每遍历1个元素就执行一次push操作,最终生成的数组长度为6,不符合预期的3个对象的结构,应该每处理完一组「日期+运动」的配对后再推入结果数组。
正确实现方案

两种方案运行后都可以得到预期的目标数组结构:

方案1:基础for循环(贴合原有写法思路)

const WorkList1 = ["Monday", "running", "Tuesday", "swimming", "Wednesday", "riding"];
const WorkList2 = [];
// 每次步长设为2,直接遍历每个day的位置
for (let i = 0; i < WorkList1.length; i += 2) {
  // 每次循环内部新建对象,避免引用问题
  const object = {
    day: WorkList1[i],
    exercise: WorkList1[i + 1]
  };
  WorkList2.push(object);
}

方案2:简洁写法(利用Array.from批量生成)

const WorkList1 = ["Monday", "running", "Tuesday", "swimming", "Wednesday", "riding"];
const WorkList2 = Array.from({ length: WorkList1.length / 2 }, (_, index) => ({
  day: WorkList1[index * 2],
  exercise: WorkList1[index * 2 + 1]
}));

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 00:18:04