例如,在下面的 json 数组中,每个元素都有 name
以及 tracks.items
中的可变项目列表
[
{
"name": "whatever",
"tracks": {
"items":
[
{
"item 1" : "some item"
},
...
]
}
},
{...}
...
]
在javascript中,我需要找到不同的name
的数量的,以及所有 tracks.items
的长度(大小)之和在整个数组中找到。
如何使用下划线或 lodash 来做到这一点?我试过_.countBy()
但这只返回个人计数
编辑
谢谢大家
(替代解决方案)
const uniqueNames = new Set(array.map(item => item.name)).size
const totalItems = array.reduce((sum, item) => sum + item.tracks.items.length, 0)
最佳答案
如Stucco noted in his answer您可以通过检查 _.uniqBy()
结果的长度来获取唯一名称的数量。按名称
。
您可以使用 _.sumBy()
获取跟踪项目的总量.
var arr = [{"name":"whatever","tracks":{"items":[{"item 1":"some item"},{"item 2":"some item"},{"item 3":"some item"}]}},{"name":"whatever","tracks":{"items":[{"item 4":"some item"},{"item 5":"some item"},{"item 6":"some item"},{"item 7":"some item"}]}},{"name":"whatever2","tracks":{"items":[{"item 8":"some item"},{"item 9":"some item"},{"item 10":"some item"},{"item 11":"some item"}]}}];
var uniqueNamesCount = _.uniqBy(arr, 'name').length;
var totalTracksItemsCount = _.sumBy(arr, 'tracks.items.length');
console.log('uniqueNamesCount', uniqueNamesCount); // 2
console.log('totalTracksItemsCount', totalTracksItemsCount); // 11
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.5/lodash.min.js"></script>
关于Javascript 计算 json 数组中的不同值和总和列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49806871/