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

JS如何将属性为等长数组的对象动态转换为对象数组列表

实现方案

你需要的动态适配任意属性的转换逻辑可以通过以下代码实现,兼容任意数量的输入属性,无需手动声明每个字段:

const parseData = (obj) => {
  // 拿到输入对象所有的属性名
  const keys = Object.keys(obj)
  // 所有属性对应的数组长度一致,取第一个的长度作为遍历边界
  const arrLength = obj[keys[0]].length
  // 遍历每个索引位置,生成对应的对象
  return Array.from({length: arrLength}, (_, index) => {
    // 对当前索引,聚合所有属性对应的值
    return keys.reduce((currentItem, key) => {
      currentItem[key] = obj[key][index]
      return currentItem
    }, {})
  })
}

代码说明

  • 该实现完全不需要硬编码任何属性名,不管输入对象有几百还是几千个属性,都可以自动适配
  • 时间复杂度为O(m*n),其中m为属性数量、n为数组长度,属于该需求下的最优时间复杂度,没有额外性能损耗
  • 只要输入符合你提到的「所有属性对应的数组长度始终相等」的前提即可正常运行

效果验证

用你提供的输入数据测试:

const teams = {
  teams: ['Lakers', 'Clippers', 'Bucks', 'Suns'],
  states: ['California', 'California', 'Wisconsin', 'Arizona']
}
console.log(parseData(teams))

输出结果和你需要的teamsList完全一致。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 14:51:01