Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/476.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 对数组对象中的数组项进行计数(组合计数)_Javascript_Ecmascript 2017 - Fatal编程技术网

Javascript 对数组对象中的数组项进行计数(组合计数)

Javascript 对数组对象中的数组项进行计数(组合计数),javascript,ecmascript-2017,Javascript,Ecmascript 2017,考虑以下对象: 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);

考虑以下对象:

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

我正在寻找一种更简单(更干净,希望只有一行)的方法来实现这一点…

只需获取值的长度即可

const测试={
foo:['foo','bar','foobar'],
酒吧:['foo','bar','foobar'],
foobar:['foo','bar','foobar']
};
让count=Object.values(test).flat().length;

控制台日志(计数)您可以使用数组reduce,它非常接近于一行:

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

正是我要找的那种东西!非常感谢。现在将测试工作完美-将尽快接受。这正是我发布这个问题的原因。我在谷歌上搜索了一些关键词,但什么也没找到。
flat
方法是我以前从未遇到过的。。。非常感谢你!由于问题被特别标记为ES2017,我想指出,
Array.prototype.flat()
实际上是在ES2019规范中引入的。@PatrickRoberts-啊,非常有趣!我之所以标记ES2017,是因为我想鼓励采用现代解决方案。ES2019甚至更好:-DI喜欢此解决方案,因为
reduce()
是聚合的常规方法选择,并避免创建类似
flat()
的临时数组。