繁体   English   中英

如何使用 Lodash 计算嵌套数组中的值?

[英]How to count values in a nested array using Lodash?

我正在尝试使用Lodash计算users.hobbies的唯一计数。 数据如下所示:

var users = [
  { 'user': 'barney', 'age': 36, 'hobbies': ['soccer','basketball']  },
  { 'user': 'fred',   'age': 40, 'hobbies': ['soccer', 'golf'] },
  { 'user': 'tom',   'age': 25,  'hobbies': ['golf'] }
];

我试过了:

_.countBy(users, 'hobbies');
// { 'soccer,basketball': 1, 'soccer,golf': 1, golf: 1 }

所需的输出是:

// { 'soccer':2, 'basketball':1, 'golf':2}

我想我需要split users.hobbies的值,但我不确定如何应用它。

你可以把之前的爱好扁平化:

 const users = [ { 'user': 'barney', 'age': 36, 'hobbies': ['soccer','basketball'] }, { 'user': 'fred', 'age': 40, 'hobbies': ['soccer', 'golf'] }, { 'user': 'tom', 'age': 25, 'hobbies': ['golf'] } ]; const count = _.countBy(users.flatMap(user => user.hobbies)); console.log(count);
 <script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.21/lodash.min.js"></script>

不确定 lodash,但这里是原生 js 的解决方案

users.reduce((total, el) => {
    el.hobbies.forEach(el => {
        if (el in total) total[el]++
        else total[el] = 1
    })
    return total
}, {})

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM