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

如何将包含多厂商硬盘信息的JavaScript对象转换为型号-描述键值对结构?

解决JavaScript对象转换问题的思路与实现方法

嘿,这个转换需求其实很好实现,核心就是把原对象里的「品牌-型号」和「品牌描述」对应起来,最终生成以型号为键、描述为值的新对象。我给你两种具体的实现方式:

方法一:使用for...of循环遍历(直观易懂)

这种方式逻辑清晰,适合刚接触这类操作的开发者理解:

var words = [{ IBM: '00AJ136', DESCRIPTION_IBM: '500GB Serial ATA (SATA) 2.5"" 6G 7.2K NL SFF G3HS Hot-Swap Hard Drive', HP: '332751-B21', DESCRIPTION_HP: 'Compaq 72GB Non-Hot Plug Ultra320 SCSI Hard Drive 10K', DELL: '01XF66', DESCRIPTION_DELL: 'DELL 1.2TB HARD DRIVE', HITACHI: 'HUC101890CSS204', DESCRIPTION_HITACHI: '900GB 10K 12G SAS HARD DRIVE', EMC: '5048946', DESCRIPTION_EMC: '005048946 EMC 300GB 10K SFF SAS HARD DRIVE', SEAGATE: '2C6200-002', DESCRIPTION_SEAGATE: '2C6200-002 SEAGATE 300GB 10K SFF SAS HARD DRIVE', WD: 'WD1000CHTZ', DESCRIPTION_WD: 'WD 1TB 7200 6G 2.5"" SATA DRIVE', TOSHIBA: 'DT01ACA300', DESCRIPTION_TOSHIBA: 'TOSHIBA DT01ACA300 3TB 7200rpm 3.5"" Serial ATA 3.0 Hard Drive' }];

// 1. 取出数组中唯一的原始数据对象
const originalObj = words[0];
// 2. 初始化空对象存储转换结果
const convertedObj = {};

// 3. 遍历原始对象的所有键值对
for (const [key, value] of Object.entries(originalObj)) {
  // 只处理品牌键(跳过以DESCRIPTION_开头的描述键)
  if (!key.startsWith('DESCRIPTION_')) {
    // 拼接对应的描述键名
    const descKey = `DESCRIPTION_${key}`;
    // 将型号作为新键,对应描述作为值存入结果对象
    convertedObj[value] = originalObj[descKey];
  }
}

console.log(convertedObj);

方法二:使用reduce函数(简洁高效)

如果喜欢更简洁的函数式写法,可以用reduce一步完成转换:

var words = [{ IBM: '00AJ136', DESCRIPTION_IBM: '500GB Serial ATA (SATA) 2.5"" 6G 7.2K NL SFF G3HS Hot-Swap Hard Drive', HP: '332751-B21', DESCRIPTION_HP: 'Compaq 72GB Non-Hot Plug Ultra320 SCSI Hard Drive 10K', DELL: '01XF66', DESCRIPTION_DELL: 'DELL 1.2TB HARD DRIVE', HITACHI: 'HUC101890CSS204', DESCRIPTION_HITACHI: '900GB 10K 12G SAS HARD DRIVE', EMC: '5048946', DESCRIPTION_EMC: '005048946 EMC 300GB 10K SFF SAS HARD DRIVE', SEAGATE: '2C6200-002', DESCRIPTION_SEAGATE: '2C6200-002 SEAGATE 300GB 10K SFF SAS HARD DRIVE', WD: 'WD1000CHTZ', DESCRIPTION_WD: 'WD 1TB 7200 6G 2.5"" SATA DRIVE', TOSHIBA: 'DT01ACA300', DESCRIPTION_TOSHIBA: 'TOSHIBA DT01ACA300 3TB 7200rpm 3.5"" Serial ATA 3.0 Hard Drive' }];

const convertedObj = Object.entries(words[0]).reduce((acc, [key, value]) => {
  if (!key.startsWith('DESCRIPTION_')) {
    acc[value] = words[0][`DESCRIPTION_${key}`];
  }
  return acc;
}, {});

console.log(convertedObj);

核心思路说明

两种方法的逻辑是一致的:

  1. 先从words数组中取出唯一的原始对象(因为你的words是数组包裹的单个对象);
  2. 遍历原始对象的所有键值对,筛选出品牌名称的键(而非描述键);
  3. 通过品牌键拼接出对应的描述键(比如IBM对应DESCRIPTION_IBM);
  4. 将品牌对应的型号作为新对象的键,对应描述作为值存入结果对象。

如果你的数据里存在重复的型号,后面的条目会覆盖前面的,这是JavaScript对象的特性,如果需要处理这种情况,可以额外加判断逻辑哦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 18:07:43