如何在angular或javascript中计算分组数组的长度?
我想知道每组的长度。我们怎样才能做到如何在angular或javascript中计算分组数组的长度?,javascript,angular,Javascript,Angular,我想知道每组的长度。我们怎样才能做到 例如array.group['secound category'].length您可以使用array.filter: var数组=[ { 姓名:“你好1”, 核对:对, 颜色:“#1ac3ec”, 组:'第一类' }, { 姓名:“你好2”, 核对:对, 颜色:“#7dc55c”, 组:'第一类' }, { 姓名:“你好3”, 核对:对, 颜色:“#005073”, 组:'第二类' },{ 姓名:“你好4”, 核对:对, 颜色:“#fbb330”, 组:'
例如array.group['secound category'].length您可以使用array.filter:
var数组=[
{
姓名:“你好1”,
核对:对,
颜色:“#1ac3ec”,
组:'第一类'
},
{
姓名:“你好2”,
核对:对,
颜色:“#7dc55c”,
组:'第一类'
},
{
姓名:“你好3”,
核对:对,
颜色:“#005073”,
组:'第二类'
},{
姓名:“你好4”,
核对:对,
颜色:“#fbb330”,
组:'第二类'
}
];
var len1=array.filter(e=>e.group=='first category')。长度;
控制台日志(len1);
var len2=array.filter(e=>e.group=='second category')。长度;
控制台日志(len2)代码>您可以使用纯JavaScript来完成。用于按类别创建一个组,然后您可以简单地计算元素的数量,例如:
array = [
{
name: 'hello 1',
checked: true,
color:'#1ac3ec',
group:'first category'
},
{
name: 'hello 2',
checked: true,
color:'#7dc55c',
group:'first category'
},
{
name: 'hello 3',
checked: true,
color:'#005073',
group:'second category'
},{
name: 'hello 4',
checked: true,
color:'#fbb330',
group:'second category'
}
]
工作演示:
const数组=[
{
姓名:“你好1”,
核对:对,
颜色:“#1ac3ec”,
组:'第一类'
},
{
姓名:“你好2”,
核对:对,
颜色:“#7dc55c”,
组:'第一类'
},
{
姓名:“你好3”,
核对:对,
颜色:“#005073”,
组:'第二类'
},{
姓名:“你好4”,
核对:对,
颜色:“#fbb330”,
组:'第二类'
}
];
常量组=数组。减少((acc,项目)=>{
如果(!acc[项目组]){
acc[项目组]=[];
}
acc[项目组].推送(项目);
返回acc;
}, {});
日志(组['first category'].length);
log(组['second category'].length)
如果只需要查找一个特定组名的长度,请使用.filter
;如果需要计算所有组名的长度,请使用reduce
:
const输入=[
{
姓名:“你好1”,
核对:对,
颜色:“#1ac3ec”,
组:'第一类'
},
{
姓名:“你好2”,
核对:对,
颜色:“#7dc55c”,
组:'第一类'
},
{
姓名:“你好3”,
核对:对,
颜色:“#005073”,
组:'第二类'
},{
姓名:“你好4”,
核对:对,
颜色:“#fbb330”,
组:'第二类'
},{
姓名:“你好4”,
核对:对,
颜色:“#fbb330”,
组:'唯一类别'
}
];
const groups=input.reduce((累计,{group})=>{
累计[组]=(累计[组]| 0)+1;
返回累计;
}, {});
控制台日志(组)代码>虽然冗长,但这应该是更干净的解决方案:
group['first category'].length
它应该输出2、4还是8?有两个组:“第一类”和“第二类”。想数一数这些长度吗?谢谢。。我还需要一个解决方案。。如果我的总长度为4,那么我只想显示2个计数作为文本,那么我们可以这样做吗?
var array = [
{
name: 'hello 1',
checked: true,
color:'#1ac3ec',
group:'first category'
},
{
name: 'hello 2',
checked: true,
color:'#7dc55c',
group:'first category'
},
{
name: 'hello 3',
checked: true,
color:'#005073',
group:'second category'
},{
name: 'hello 4',
checked: true,
color:'#fbb330',
group:'second category'
}
];
var name = checked = color = group = 0;
array.forEach(function(item){
if(item.name){
name++;
}
if(item.checked){
checked++;
}
if(item.color){
color++;
}
if(item.group){
group++;
}
});
console.log(name);
console.log(checked);
console.log(color);
console.log(group);