当前位置: 首页 > 知识库问答 >
问题:

提取另一个对象数组中的对象数组内部的属性,并将结果作为字符串数组

荣俊
2023-03-14

我有一个具有以下结构的TypeScript对象数组:

const surveyResponses: any[] = [
  {createdAt: new Date(), responses: [{questionId: 'input1', response: 'Bla'}]},
  {createdAt: new Date(), responses: [{questionId: 'input1', response: 'Blo'}]}
];

我想提取response数组中的response属性,并将它们作为单个字符串数组。

预期结果:['Bla','Blo']

我已尝试遵循以下建议:

  1. 从对象数组中,提取属性值作为数组
  2. 仅从Javascript中的对象数组返回某些属性

我尝试使用减少没有运气:

responses.reduce((a, o) => (o.responses.map(r => r.response) && a.push(o.responses.map(r => r.response)), a), []);

我尝试过使用map,但运气不佳:

responses.map(r => r.responses).map(r => r.map(r => r.response));
Result: [["Bla"], ["Blo"]]

任何帮助都将不胜感激。

共有2个答案

刁远
2023-03-14

在我看来,使用flatMap是一个更简单的选项。如果它不可用,您可以随时填充它。

const result = surveyResponses.flatMap(r => r.responses).map(r => r.response)
console.log(result)
阎涵容
2023-03-14

使用flatMap获取响应数组,获取它们的响应字符串,并组合它们:

const surveyResponses = [
  {createdAt: new Date(), responses: [{questionId: 'input1', response: 'Bla'}]},
  {createdAt: new Date(), responses: [{questionId: 'input1', response: 'Blo'}]}
];

const result = surveyResponses.flatMap(
  item => item.responses.map(
    ({ response }) => response
  )
);
console.log(result);
 类似资料:
  • 问题内容: 我有以下结构的JavaScript对象数组: 我想从每个对象中提取一个字段,并获取一个包含值的数组,例如field 将给出array 。 我可以用这种简单的方法做到这一点: 有没有更优雅或更惯用的方法来执行此操作,从而不需要自定义实用程序功能? 关于建议的重复项的注释,它涵盖了如何将单个 对象 转换为数组。 问题答案: 这是实现它的一种较短的方法: 要么 您也可以检查。

  • 问题内容: 我有一个长的JSON字符串,表示从WCF服务返回的string []数组。数组元素只是字符串,不是对象。这是返回数据的示例 我不介意包含在字符串中的索引,但是我需要将字符串解析为Android中的ArrayList,以便可以将其调整为ListView。 由于从技术上讲这些不是JSONObjects,我如何遍历它们并从每个数组元素中提取字符串? 问题答案: 这是有效的JSON字符串数组,

  • 问题内容: 我有两个对象数组。我想基于PermissionObj过滤数据。 这是即将形成的数据库。这是permissionObj中的子数组的数组。 这是静态数据。我想比较基于PermissionObj的数据。 我正在尝试基于 对象 的 PermissionObj数组 过滤 对象 的 数据数组 。这是我尝试的代码。 如果PermissionObj值将与data值匹配。然后显示数据。 我接受的输出将是

  • 我发现自己经常遇到这种模式。我有一个从api中返回的对象数组,我只需要操作所有对象中的一个属性。 有没有办法使用ES6/Babel或Typescript让该模式更具声明性? 寻找一些巧妙的破坏技巧或类似的东西。

  • 已更新-arr3中的id属性的顺序应与arr1中的id属性的顺序相同

  • 问题内容: var arrObj = [{a:1, b:2},{c:3, d:4},{e:5, f:6}]; 如何将其合并为一个obj? 问题答案: 如果您的环境支持,那么您可以像这样简洁地进行操作 ES5解决方案: 您可以使用这样的 此解决方案仅将的所有键及其值收集在中的每个对象中,最终将结果返回给我们。 这张支票 有必要确保我们在结果中不包括所有继承的可枚举属性。