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

如何将含数组属性的JavaScript对象转换为目标对象数组?

嘿,这个转换需求很典型,我给你两种实用的实现方式,都是日常开发里常用的写法~

方法一:使用for循环(直观易懂)

这种写法逻辑清晰,适合刚接触JS的朋友理解:

// 你的原始输入对象
const originalData = { 
  itemName: [ 'hard drive', 'fafa' ], 
  itemValue: [ '383.00', '565' ], 
  itemQuantity: [ '61626', '65' ], 
};

// 定义转换函数
function transformToItems(obj) {
  // 先拿到数组的长度(假设三个数组长度一致,若不一致可以加判断)
  const itemCount = obj.itemName.length;
  const itemsArray = [];

  // 遍历每个索引,把对应属性值拼成单个item对象
  for (let i = 0; i < itemCount; i++) {
    itemsArray.push({
      itemName: obj.itemName[i],
      itemValue: obj.itemValue[i],
      itemQuantity: obj.itemQuantity[i]
    });
  }

  // 最后包装成你要的结构
  return { items: itemsArray };
}

// 调用函数得到结果
const finalResult = transformToItems(originalData);
console.log(finalResult);
方法二:使用map方法(简洁优雅)

如果你喜欢函数式编程风格,用map可以一行搞定核心逻辑,代码更紧凑:

const originalData = { 
  itemName: [ 'hard drive', 'fafa' ], 
  itemValue: [ '383.00', '565' ], 
  itemQuantity: [ '61626', '65' ], 
};

const finalResult = {
  items: originalData.itemName.map((name, index) => ({
    itemName: name,
    itemValue: originalData.itemValue[index],
    itemQuantity: originalData.itemQuantity[index]
  }))
};

console.log(finalResult);
额外提示:处理数组长度不一致的情况

如果你的原始数据里可能出现三个数组长度不一样的情况(比如某个属性少了元素),可以加个边界判断,取最短的数组长度来循环,避免出现undefined:

function transformToItems(obj) {
  // 先获取所有数组中最短的长度
  const minItemCount = Math.min(...Object.values(obj).map(arr => arr.length));
  const itemsArray = [];

  for (let i = 0; i < minItemCount; i++) {
    itemsArray.push({
      itemName: obj.itemName[i],
      itemValue: obj.itemValue[i],
      itemQuantity: obj.itemQuantity[i]
    });
  }

  return { items: itemsArray };
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 04:01:10