我有一个具有以下结构的TypeScript对象数组:
const surveyResponses: any[] = [
{createdAt: new Date(), responses: [{questionId: 'input1', response: 'Bla'}]},
{createdAt: new Date(), responses: [{questionId: 'input1', response: 'Blo'}]}
];
我想提取response
数组中的response
属性,并将它们作为单个字符串数组。
预期结果:['Bla','Blo']
我已尝试遵循以下建议:
我尝试使用减少
没有运气:
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"]]
任何帮助都将不胜感激。
在我看来,使用flatMap
是一个更简单的选项。如果它不可用,您可以随时填充它。
const result = surveyResponses.flatMap(r => r.responses).map(r => r.response)
console.log(result)
使用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属性的顺序相同
我有一个JavaScript对象数组: 如何在JavaScript中按照的值对它们进行排序? 我知道,但它似乎只适用于字符串和数字。是否需要向对象添加方法?