Javascript 计算 json 数组中的不同值和总和列表

标签 javascript json underscore.js lodash

例如,在下面的 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/

相关文章:

javascript - 使用 javascript 存储临时数据以从 Web 应用程序传递到桌面应用程序的最佳方式

javascript - 有没有办法将包含日期的字符串数组从服务器端传递到客户端?

android - Youtube API 权限 403 禁止错误

java - 如何在 json 文件中编辑和添加嵌套数据?

javascript - Underscore.js findLast() 方法

javascript - 可以相互访问的节点的有效分组

javascript - iframe resize跨域无控制

javascript - 如何遍历 JavaScript 对象?

javascript - 输入另一个元素时如何停止 mouseleave 事件?

javascript - 如何测试一个数组是否是另一个数组的子集?