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.
但我认为这不好。如果你有更好的方法,请告诉我。
2 个解决方案
#1
4
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)
#2
1
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")
}
}
#1
4
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)
#2
1
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")
}
}