Lowdb计算对象数组中的每个字符串

时间:2017-01-30 14:30:33

标签: javascript optimization lodash

我正在尝试使用lowdb来计算对象数组中的字符串数。

以下是我的对象示例:

{
  "tags": [
    "test",
    "test2"
  ]
},
{
  "tags": [
    "test",
    "test3"
  ]
}

我想得到这个:

{
  test: 2,
  test2: 1,
  test3: 1
}

我已经成功地做到了这样:

_.each(selectAll().value(), (bookmark) => {
    if (bookmark.tags.length > 0) {
        _.each(bookmark.tags, (bookmarksTags) => {
            if (!(bookmarksTags in tags)) {
                tags[bookmarksTags] = 0
            }

            tags[bookmarksTags]++
        })
    }
})

它有效,但......它很难看,我不喜欢它。你知道更好更合适的Lodash吗?

2 个答案:

答案 0 :(得分:0)

您可以使用普通javascript {/ 1}}和reduce()



forEach()




答案 1 :(得分:0)

使用Lodash的一种方式:

_.countBy(_.flatMap(arr,'tags'))

arr是源数组



var o = [{  "tags": [    "test",    "test2"  ]},{  "tags": [    "test",    "test3"  ]}];

console.log(_.countBy(_.flatMap(o,'tags')));

<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.min.js"></script>
&#13;
&#13;
&#13;