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

Javascript count distinct value and sum lists in json array

例如,在下面的 json 数组中,每个元素都有一个 nametracks.items

中的可变项目列表
[
    {
    "name": "whatever",
    "tracks": {
        "items": 
        [
            {
             "item 1" : "some item" 
            },
            ...
        ]
        }
    },
    {...}
    ...
]

在javascript中,我需要找到不同name的数量,以及整个tracks.items中找到的所有tracks.items的长度(大小)之和数组。
我如何使用下划线或 lodash 来做到这一点?我试过 _.countBy() 但只有 returns 个人算

编辑
谢谢大家
(替代解决方案)
const uniqueNames = new Set(array.map(item => item.name)).size const totalItems = array.reduce((sum, item) => sum + item.tracks.items.length, 0)

let obj = [{
    "name": "whatever",
    "tracks": {
        "items": 
        [
            {
                "item 1" : "some item" 
            },
            ...
        ]
        }
    },
    {...}
    ...
];

let uniqueNames = _.uniqBy(obj, 'name').length;
let totalItemes = _.reduce(obj, (result, value) => result += value.tracks.items.length, 0);

工作示例:

var obj = [{
  "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"
      }
    ]
  }
}]
let names = _.uniqBy(obj, 'name');
let uniqueNames = names.length
let items = _.reduce(obj, (result, value) => result += value.tracks.items.length, 0)
console.log(names);
console.log(uniqueNames)
console.log(items)
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.5/lodash.min.js"></script>

作为 you can get the number of unique names, by checking the length of the result of _.uniqBy() 通过 name

您可以使用 _.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>