Node.JS使用lodash将children对象添加到对象

时间:2018-04-16 05:59:06

标签: javascript arrays node.js object lodash

我有一个看起来像这样的对象:

[{
     "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"
 }]

我想将它与一个独特的kanjipart数组合并删除重复的部分。我希望它返回结果如下

{
    "kanji": ["籲", "龥"],
    "part": ["一", "|", "亅", "个", "ハ", "冂", "口", "目", "冊", "竹", "貝", "頁", "龠", "廾"]
}

如何使用lodash进行操作?

3 个答案:

答案 0 :(得分:1)

您可以将mapuniq一起使用,以获取对象中的所有唯一值。

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,即可获得所需的结果。

<强>样本

&#13;
&#13;
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;
&#13;
&#13;

答案 2 :(得分:0)

您可以使用flatMap获取kanjis和部件的扁平数组。然后使用uniq仅保留唯一元素:

let
const