假设有这么一个对象:
{
posts: [
{
title: "title1",
url: "url1", // title 和 url 均不会重复
tags: [{ name: "tagName1", slug: "tagSlug1" }], // tags 数组只有一个元素,下同
...
},
{
title: "title2",
url: "url2",
tags: [{ name: "tagName2", slug: "tagSlug2" }],
...
},
{
title: "title3",
url: "url3",
tags: [{ name: "tagName1", slug: "tagSlug1" }],
...
},
{
title: "title4",
url: "url4",
tags: [{ name: "tagName1", slug: "tagSlug1" }],
...
}
...
]
}
我们可以看到,tags 数组是有重复的,试问如何才能合并具有相同 tags 数组的对象,同时将对应的不同 title 和 url 对象合并为数组,即,经过你的 js 处理后,生成类似下面的结构:
{
posts: [
{
data: [
{ title: "title1", url: "url1" },
{ title: "title3", url: "url3" },
{ title: "title4", url: "url4" }
],
tags: [{name: "tagName1", slug: "tagSlug1"}],
...
},
{
data: [
{ title: "title2", url: "url2" }
],
tags: [{name: "tagName2", slug: "tagSlug2"}],
...
},
...
]
}
今天遇到的一个题目,想了很久也没有头绪,求老司机解答
其实这里最麻烦是对
Object
判断,题主并没有给出name
和slug
是什么样的一个类型值,所以一切都变得非常难办。但,也不是无从下手,可以借助第三方库,例如:lodash 和
_.isEqual
。