如何使用 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
}, {})
我正在尝试使用 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
}, {})