У меня есть объект с некоторыми элементами массива, теперь я должен рассчитать длину всех элементов. У меня возникла идея рассчитать эти элементы, я объявил переменную count = 0
, затем вычислил эти элементы length & added with 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)....?)
Вы ищете сокращение:
Object.values(obj).reduce((sum, subarr) => sum + subarr.length, 0)
Это один из редких хороших условий для него, есть много других случаев, которые уменьшают, на самом деле усложняет код, поэтому лучше использовать глобальные переменные.
subarr.length
вернет длину ключа, она должна быть subarr[1].length
Object.entries()
с Object.values()
ты можешь сделать
[].concat.apply([], Object.values(obj)).length
или с использованием ES6
[].concat(...Object.values(obj)).length
Я просто добавляю еще один шаг для объединения/сглаживания массива массивов в JavaScript?
calculate
переменная? Вы имеете в видуcount
?