计算数组对象中的数组项(组合计数)

Count Array Items in Object of Arrays (combined count)

考虑以下对象:

const test = {
    foo: ['foo', 'bar', 'foobar'],
    bar: ['foo', 'bar', 'foobar']
    foobar: ['foo', 'bar', 'foobar']
};

如何获取上述对象中每个数组中所有项目的总计数?

我知道我可以按照以下方式做一些事情:

let count = 0;

Object.values(test).forEach(value => count += value.length);

console.log(count) // Expected result: 9

我正在寻找一种更简单(更干净,希望是单行)的方法来实现这一目标...

只需获取 flat 个值的长度。

const test = {
    foo: ['foo', 'bar', 'foobar'],
    bar: ['foo', 'bar', 'foobar'],
    foobar: ['foo', 'bar', 'foobar']
};

let count = Object.values(test).flat().length;

console.log(count);

您可以使用数组 reduce,它非常接近单行代码:

const count = Object.values(test).reduce((acc, cv) =>  acc + cv.length ,0)