首页 > 解决方案 > 在要计数的对象经常变化的模型中计数属性

问题描述

对于给定的场景,我需要计算items给定字段中的数量。下面应该能更好地反映。

resource = {
     name1 : [1,2,3,4],
     name2 : [a,b,c]
}

但有时它看起来像

resource = [1, 2, c, 8]

我正在努力掌握的是如何在一个函数中获得每个场合的项目总数。我对如何做到这一点感到满意,但我需要尝试制作一个可以接受两者并返回我正在寻找的结果的函数。

对于此示例,第一个场景将是 7 items,第二个场景将返回 4items

标签: javascriptarraysangular

解决方案


您可以使用Object.values(), 和Array.concat()resource对象的属性转换为单个数组。这不会影响resource数组。然后得到长度。

const resource1 = {
     name1 : [1,2,3,4],
     name2 : ['a','b','c']
}

const resource2 = [1, 2, 'c', 8];

const countItems = (obj) => [].concat(...Object.values(obj)).length;

console.log(countItems(resource1)); // 7

console.log(countItems(resource2)); // 4


推荐阅读