javascript - 基于彼此的值键对值键进行分组
问题描述
抱歉标题不好,我真的不知道如何表达这个,这可能是一个微不足道的问题......
来自数组的数据看起来像这样,每个名称可以有不定数量的sequence
,我想做的是按名称对它们进行分组并将每个序列放入一个数组中
[
{
name: 'Mike',
sequence: 'AAAA',
},
{
name: 'Bob',
sequence: 'ABAB',
},
{
name: 'Bob',
sequence: 'AAAB',
},
{
name: 'Marvin',
sequence: 'AAAA',
},
{
name: 'Marvin',
sequence: 'AABA',
},
{
name: 'Marvin',
sequence: 'BBBB',
},
]
我希望通过使用console.log(name, array)
例如为每个名称返回的内容是这样的
Mike ["AAAA"]
Bob ["ABAB","AAAB"]
Marvin ["AAAA","AABA","BBBB"]
非常感谢!
解决方案
如评论中所述,您似乎已经尝试了一些解决问题的方法。
您可以尝试以下解决方案
- 使用Array.reduce将数组转换为具有
keys
名称和序列数组value
的对象 - 在
reduce
函数中,检查名称是否存在于结果对象中。如果存在,则将序列连接到它(使用扩展语法),否则添加一个带有序列的数组的新条目。
let input = [{name:'Mike',sequence:'AAAA',},{name:'Bob',sequence:'ABAB',},{name:'Bob',sequence:'AAAB',},{name:'Marvin',sequence:'AAAA',},{name:'Marvin',sequence:'AABA',},{name:'Marvin',sequence:'BBBB',}];
let result = input.reduce((a, {name, sequence}) => Object.assign(a, {[name] : a[name] ? [...a[name], sequence]: [sequence]}), {});
console.log(result);
推荐阅读
- amazon-web-services - 在 AWS CloudFromation 和无服务器中组织堆栈和共享资源
- django - 在 Django 中将模型导入表单
- javascript - 每个第三个元素的过滤器数组
- sql-server - 查看总结产品
- angular - CORS 策略已阻止从源“http://localhost:4200”访问“https://maps.googleapis.com/maps/api/place/details”处的 XMLHttpRequest:
- python - 使用 pydantic 生成验证根列表和映射的 json 模式
- javascript - 如果字符串太大,如何按位或两个二进制字符串(仅包含 0 和 1)?(说字符串长度可达 500)
- javascript - 正则表达式使用 javascript 将数字转换为巴西货币
- c - c代码:fprintf在文件上打印的次数少于预期
- java - MongoDB java驱动程序将未定义作为值传递