如何将AWS Cognito listUsers返回的数组转换为扁平化数组?
解决AWS Cognito listUsers返回数据的扁平化问题
你可以通过遍历用户数组,将每个用户的Attributes数组转换为键值对对象,再与原对象的其他属性合并来实现扁平化。以下是具体实现方式:
基础实现
// originalUsers 是你从listUsers获取的原始用户数组 const flattenedUsers = originalUsers.map(user => { // 将Attributes数组转成键值对对象 const attributesMap = user.Attributes.reduce((result, attribute) => { result[attribute.Name] = attribute.Value; return result; }, {}); // 合并属性,生成扁平化结构 return { Username: user.Username, UserStatus: user.UserStatus, ...attributesMap }; });
更灵活的实现(适配原对象多属性场景)
如果原始用户对象包含除Username、Attributes、UserStatus之外的其他字段,用解构赋值可以更灵活地保留所有非Attributes属性:
const flattenedUsers = originalUsers.map(({ Attributes, ...userRest }) => { const attributesMap = Attributes.reduce((result, attribute) => { result[attribute.Name] = attribute.Value; return result; }, {}); return { ...userRest, ...attributesMap }; });
代码说明
map方法遍历原始用户数组,逐个处理每个用户对象reduce方法将Attributes数组转换为以Name为键、Value为值的普通对象- 最后通过对象展开运算符
...,将转换后的属性对象与原对象的其他属性合并,得到你需要的扁平化结构
内容的提问来源于stack exchange,提问作者Rich
相关产品推荐
相关产品推荐

