我有一个看起来像这样的对象:
[{
"id": 3298,
"kanji": "籲",
"part": "一 | 亅 个 ハ 冂 口 目 冊 竹 貝 頁 龠 廾",
"createdAt": "2018-04-16T02:27:33.993Z",
"updatedAt": "2018-04-16T02:27:33.993Z"
}, {
"id": 5801,
"kanji": "龥",
"part": "一 | 亅 个 ハ 冂 口 廾 目 冊 貝 頁 龠",
"createdAt": "2018-04-16T02:27:34.102Z",
"updatedAt": "2018-04-16T02:27:34.102Z"
}]
我想将它与一个独特的kanji
和part
数组合并删除重复的部分。我希望它返回结果如下
{
"kanji": ["籲", "龥"],
"part": ["一", "|", "亅", "个", "ハ", "冂", "口", "目", "冊", "竹", "貝", "頁", "龠", "廾"]
}
如何使用lodash
进行操作?
答案 0 :(得分:1)
您可以将map
与uniq
一起使用,以获取对象中的所有唯一值。
const data = [ { "id": 3298, "kanji": "籲", "part": "一 | 亅 个 ハ 冂 口 目 冊 竹 貝 頁 龠 廾", "createdAt": "2018-04-16T02:27:33.993Z", "updatedAt": "2018-04-16T02:27:33.993Z" }, { "id": 5801, "kanji": "龥", "part": "一 | 亅 个 ハ 冂 口 廾 目 冊 貝 頁 龠", "createdAt": "2018-04-16T02:27:34.102Z","updatedAt": "2018-04-16T02:27:34.102Z" } ];
const result = {
kanji : _(data).map('kanji').uniq().value(),
part : _(data).map('part').split(' ').uniq().value()
};
console.log(result);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.5/lodash.min.js"></script>
答案 1 :(得分:1)
您还可以使用reduce()
和spread operator
,即可获得所需的结果。
<强>样本强>
const arr=[
{
"id": 3298,
"kanji": "籲",
"part": "一 | 亅 个 ハ 冂 口 目 冊 竹 貝 頁 龠 廾",
"createdAt": "2018-04-16T02:27:33.993Z",
"updatedAt": "2018-04-16T02:27:33.993Z"
},
{
"id": 5801,
"kanji": "龥",
"part": "一 | 亅 个 ハ 冂 口 廾 目 冊 貝 頁 龠",
"createdAt": "2018-04-16T02:27:34.102Z",
"updatedAt": "2018-04-16T02:27:34.102Z"
}
]
let result= arr.reduce((o,v)=>{
o.kanji.push(v.kanji);
o.part=[...o.part,...v.part.split(' ')];
return o;
},{kanji:[],part:[]});
console.log(result);
&#13;
答案 2 :(得分:0)