我有这样的数组
vm.name =['A','A','B','B','C','C','C'];
我喜欢这个来计算项目
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])
}
}
以HTML格式呈现
{{vm.a.length}} //2
{{vm.b.length}} //2
{{vm.c.length}} //3
但我认为这不好。如果你有更好的方法,请告诉我。
答案 0 :(得分:4)
您可以使用名为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)
答案 1 :(得分:1)
最好在这种情况下使用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")
}
}