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

如何从现有JSON列表中提取指定字段生成新的JSON列表?

嘿,这个需求其实用JavaScript里的Array.map()方法就能完美解决,不仅代码简洁,而且是批量处理,完全适合你说的数万个对象的场景,根本不用手动循环逐个push~

方法一:直接构造目标对象(适合固定字段)

针对你给出的测试数据,直接用map遍历原数组,每次返回只包含id和age的新对象就行:

// 原数据
$scope.TestList = [ 
  {id: 1, name: 'Bob', age: 23, bio: 'Duck Toaster'}, 
  {id: 2, name: 'Tom', age: 69, bio: 'Banana Sharks'} 
];

// 提取指定字段生成新列表
$scope.NewTestList = $scope.TestList.map(item => ({
  id: item.id,
  age: item.age
}));

运行这段代码后,$scope.NewTestList就会完全符合你的预期。map()是JS原生的数组方法,会自动遍历原数组的每一项,返回一个全新的数组,每一项都是你自定义的新对象,性能经过底层优化,对付大数据量毫无压力。

方法二:动态指定字段(更灵活)

如果你的目标字段是固定的(比如你提到的"IdApplication"和"AccountNumber"),但想让代码更通用,也可以把要提取的字段放在一个数组里,动态生成新对象:

// 定义你需要提取的固定字段
const targetFields = ["IdApplication", "AccountNumber"];

// 批量生成新列表
$scope.NewTestList = $scope.TestList.map(item => {
  const newObj = {};
  targetFields.forEach(field => {
    newObj[field] = item[field];
  });
  return newObj;
});

这种方式的好处是,以后如果需要调整提取的字段,只需要修改targetFields数组就行,不用改动核心逻辑,特别适配你说的CSV列不固定、但目标字段固定的场景。

关于你之前尝试的.push()方法

你之前用循环+.push()没得到想要的结果,大概率是没在循环里创建新对象——如果每次循环时先构建一个只包含目标字段的新对象,再push到新数组,其实也能实现,但代码会比map繁琐很多,而且map的可读性和简洁性都更强,完全没必要手动写循环。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:43:13