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

如何基于新属性拆分含多科目成绩的JavaScript对象

按科目拆分对象的实现方法

需求说明

将包含多科目分数的单个对象拆分为多个对象,每个对象仅保留一个科目及其对应分数,新增Subject字段标记科目,分数统一用Marks字段存储。

原始数据示例

let x = {
  'Name': 'Ajay',
  'Maths': 0,
  'English': 26,
}

期望输出

let y = [{
  'Name' : 'Ajay',
  'Marks' : 0,
  'Subject' : 'Maths'
},{
  'Name' : 'Ajay',
  'Marks' : 26,
  'Subject' : 'English'
}]

实现方案

核心逻辑是遍历对象的键名,跳过Name字段后,为每个科目单独创建新对象并收集到结果数组中。

完善后的遍历实现

你当前的遍历思路是可行的,但需要补充结果数组的初始化和对象收集逻辑,完整代码如下:

let x = {
  'Name': 'Ajay',
  'Maths': 0,
  'English': 26,
};
let y = []; // 初始化结果数组

for (let key of Object.keys(x)) {
  if (key === "Name") {
    continue;
  }
  // 为每个科目创建新对象并推入结果数组
  y.push({
    Name: x.Name,
    Subject: key,
    Marks: x[key]
  });
}

console.log(y); // 输出目标数组结构

更简洁的函数式写法(可选)

可以结合Object.entries、filter和map实现,代码更简洁直观:

let x = {
  'Name': 'Ajay',
  'Maths': 0,
  'English': 26,
};

let y = Object.entries(x)
  .filter(([key]) => key !== 'Name') // 过滤掉Name字段
  .map(([subject, marks]) => ({
    Name: x.Name,
    Subject: subject,
    Marks: marks
  }));

console.log(y);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 05:50:34