用object中的新值替换数组中的重复项



我在试着"平坦"具有多个重复值的数组。数组是从CSV创建的,然后我试图在其上运行API请求。CSV文件的格式如下:

Posts | Comments | 
post1   comment1
post1   comment2
post1   comment3
post2   comment1
post2   comment2
post2   comment3

我使用Papaparse返回:

[{Post: 'post1', Comment: 'comment1'}, {Post: 'post1', Comment: 'comment2'}, ...]

所以我想我应该试着把它们变平,让它们看起来像:

[{Post: 'post1', {Comment: 'comment1'}, {Comment: 'comment2'}}]

我尝试使用.map并引用index来检查以前的Post是否与当前的Post相同,如果它是.push到以前的索引,我不能使用.map

正确的做法是什么?

  • 使用Array#reduce,在更新Map的同时迭代列表,其中Post是键,值是PostComments数组的对象,用于Post
  • 使用Map#values,您可以获得分组对象的列表

const data = [ { Post: 'post1', Comment: 'comment1' }, { Post: 'post1', Comment: 'comment2' }, { Post: 'post1', Comment: 'comment3' }, { Post: 'post2', Comment: 'comment1' }, { Post: 'post2', Comment: 'comment2' }, { Post: 'post2', Comment: 'comment3' } ];
const res = [...
data.reduce((map, { Post, Comment }) => {
const { Comments = [] } = map.get(Post) ?? {};
map.set(Post, { Post, Comments: [...Comments, Comment] });
return map;
}, new Map)
.values()
];
console.log(res);

相关内容

  • 没有找到相关文章