我有一个包含一些数组项的对象,现在我必须计算所有项的长度。我有一个计算这些项目的想法,我声明了count = 0
变量,然后计算了这些项目的长度并添加了count
变量。
var obj = {
item_1: ['item1', 'item2', 'item3', 'item4'],
item_2: ['item1', 'item2', 'item3', 'item4', 'item5'],
item_3: ['item1', 'item2', 'item3']
}
var count = 0;
Object.entries(obj).map(item => {
count += item[1].length
})
console.log(count)
我的问题是:如何在不声明calculate
变量的情况下获得此结果?示例:console.log(Object.entries(Obj)....?)
答案 0 :(得分:9)
您正在寻找减少:
Object.values(obj).reduce((sum, subarr) => sum + subarr.length, 0)
这是难得的好用例之一,有很多other cases被缩减实际上使代码复杂化,因此有时使用全局变量是更好的方法。
答案 1 :(得分:0)
可以做到
[].concat.apply([], Object.values(obj)).length
或使用ES6
[].concat(...Object.values(obj)).length
上又增加了一步