[英]Need help for count array angularjs
I have array like this 我有这样的数组
vm.name =['A','A','B','B','C','C','C'];
I do like this to count item 我喜欢这样计算项目
vm.a =[];
vm.b=[];
vm.c=[];
for(var i =0;i<vm.name.length;i++){
if(vm.name[i] ==='A'){
vm.a.push(vm.name[i])
}
if(vm.name[i] ==='B'){
vm.b.push(vm.name[i])
}
if(vm.name[i] ==='C'){
vm.c.push(vm.name[i])
}
}
and render in HTML 并以HTML呈现
{{vm.a.length}} //2
{{vm.b.length}} //2
{{vm.c.length}} //3
But I don't think it is good. 但我认为这不好。 If you have a better way, please tell me. 如果您有更好的方法,请告诉我。
You can create these arrays dynamically using this beautiful function called reduce
:) 您可以使用称为reduce
漂亮函数动态创建这些数组:)
vm.name = ['A', 'A', 'B', 'B', 'C', 'C', 'C'];
vm = vm.name.reduce(function(obj, cur) {
obj[cur.toLowerCase()] = obj[cur.toLowerCase()] || []
obj[cur.toLowerCase()].push(cur)
return obj;
}, vm)
console.log(vm.b.length)
console.log(vm.c.length)
It is better to use switch
instead of if
conditions in a scenario like this. 在这种情况下,最好使用switch
代替if
条件。
for (var i = 0; i < vm.name.length; i++) {
switch (vm.name[i]) {
case "A":
vm.a.push(vm.name[i])
break;
case "B":
vm.b.push(vm.name[i])
break;
case "C":
vm.c.push(vm.name[i])
break;
default:
console.log("no such type")
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.