简体   繁体   English

需要帮助计数数组angularjs

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM