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

如何将三个等长JavaScript数组合并为结构化对象数组?

合并等长数组为结构化对象数组

嘿,这问题太典型了!既然三个数组长度完全一致,咱们可以利用数组的索引对应关系轻松搞定,下面给你两种常用的实现方式:

方法一:使用Array.map()(最简洁)

map()方法天生适合这种按索引遍历转换的场景,直接基于其中一个数组(比如date)遍历,每个索引位置对应另外两个数组的元素,组装成对象就行:

var date = ["2020-10-09", "2020-10-15"];
var count = [2, 5];
var name = ["Ivan", "Maria"];

var alldata = date.map((item, index) => ({
  date: item,
  count: count[index],
  name: name[index]
}));

console.log(alldata);
// 输出结果:
// [
//   { "date": "2020-10-09", "count": 2, "name": "Ivan" },
//   { "date": "2020-10-15", "count": 5, "name": "Maria" }
// ]

细节说明:

  • map()的第一个参数是当前遍历的元素(这里是date数组的每个日期),第二个参数是当前索引index
  • 利用index去count和name数组中取对应位置的值,直接返回组装好的对象
  • 注意对象字面量要加括号(),不然箭头函数会把大括号当成代码块解析,导致语法错误

方法二:使用for循环(更直观,适合新手理解)

如果你更喜欢传统的循环方式,用普通的for循环也能实现,逻辑和map()完全一致:

var date = ["2020-10-09", "2020-10-15"];
var count = [2, 5];
var name = ["Ivan", "Maria"];

var alldata = [];
for (let i = 0; i < date.length; i++) {
  alldata.push({
    date: date[i],
    count: count[i],
    name: name[i]
  });
}

console.log(alldata);
// 输出和上面完全一样的结果

额外提醒:

  • 一定要确保三个数组长度完全相同,不然会出现undefined的情况(如果某个数组更短的话)
  • 如果count数组的元素是字符串类型(比如["2", "5"]),可以用Number(count[index])转成数字类型,保证结构里的count是数值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 14:52:49