我有这个数组:
var markers = [
{
"type":"Chocolate",
"name":"KitKat",
"group":"candy",
"icon":"candy",
"coords":[5246,8980],
},
{
"type":"Fruit",
"name":"Orange",
"group":"fruits",
"icon":"fruis",
"coords":[9012,5493],
},
{
"type":"Fruit",
"name":"Banana",
"group":"fruits",
"icon":"fruis",
"coords":[9012,5493],
},
{
"type":"Food",
"name":"Rice",
"group":"foods",
"icon":"foods",
"coords":[6724,9556],
},
{
"type":"Food",
"name":"Meat",
"group":"foods",
"icon":"foods",
"coords":[6724,9556],
},
{
"type":"Food",
"name":"Beam",
"group":"foods",
"icon":"foods",
"coords":[6724,9556],
},
{
"type":"Liquid",
"name":"Water",
"group":"liquids",
"icon":"liquids",
"coords":[6724,9556],
},
{
"type":"Liquid",
"name":"Coffe",
"group":"liquids",
"icon":"liquids",
"coords":[6724,9556],
},
]
我想计算该数组中每个组有多少个项目。
我设法用这个来数:
var count = []
for (var i = 0; i < markers.length; i++) {
count[markers[i].group] = count[markers[i].group] + 1 || 1 ;
}
输出以下结果:
count = [
candy: 1
foods: 3
fruits: 2
liquids: 2
]
我想在另一部分中使用此值,为此,我需要将数组结构更改为如下所示:
count = [
{"item": "candy","qnt":1},
{"item": "foods","qnt":3},
{"item": "fruits","qnt":2},
{"item": "liquids","qnt":2}
]
我知道我可以做这样的事情:
var total_fruits = 0;
for (var i = 0; i < markers.length; i++) {
if (markers[i].group == "fruits"){
total_fruits++
}
}
但是想象一下,如果一组超过50种类型的我需要多少个……
我将在html部分中使用与该项目值类似的类相同的值:
<ul>
<li class="candy">
<span class="qnt">1</span>
</li>
<li class="fruits">
<span class="qnt">2</span>
</li>
<li class="foods">
<span class="qnt">3</span>
</li>
<li class="liquids">
<span class="qnt">2</span>
</li>
</ul>
有什么建议或如何改善?
您可以使用该reduce
方法返回包含项目和数量的新数组。
我们使用三元语句来确定累加器数组是否已经包含带有的组类型findIndex
。如果不是,我们将qnt推为1的新类型,如果是,我们只需增加qnt值即可。
markers.reduce((ms, m) => (ms.findIndex(o => o.item === m["group"]) > 0) ?
(ms[ms.findIndex(o => o.item === m["group"])]["qnt"]++, ms) :
(ms.push({ qnt: 1, item: m["group"]}), ms), []);
var markers=[{type:"Chocolate",name:"KitKat",group:"candy",icon:"candy",coords:[5246,8980]},{type:"Fruit",name:"Orange",group:"fruits",icon:"fruis",coords:[9012,5493]},{type:"Fruit",name:"Banana",group:"fruits",icon:"fruis",coords:[9012,5493]},{type:"Food",name:"Rice",group:"foods",icon:"foods",coords:[6724,9556]},{type:"Food",name:"Meat",group:"foods",icon:"foods",coords:[6724,9556]},{type:"Food",name:"Beam",group:"foods",icon:"foods",coords:[6724,9556]},{type:"Liquid",name:"Water",group:"liquids",icon:"liquids",coords:[6724,9556]},{type:"Liquid",name:"Coffe",group:"liquids",icon:"liquids",coords:[6724,9556]}];
let r = markers.reduce((ms, m) => (ms.findIndex(o => o.item === m["group"]) > 0) ?
(ms[ms.findIndex(o => o.item === m["group"])]["qnt"]++, ms) :
(ms.push({ qnt: 1, item: m["group"]}), ms), []);
console.log(r);
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句