计算数组中每个值有多少个对象

罗杰·汉

我有这个数组:

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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

计算数组中有多少个元素

PHP需要计算数组中有多少个特定值的实例

计算数据帧中的最后一个值和行尾之间有多少个单元格

计算numpy数组中每个其他元素的增量内有多少个元素

如何计算给定因子中每个级别有多少个值?

计算数组特定列中有多少个以字母“ZS”开头的元素

数组中顺序有多少个值

我如何使用Numpy来计算数组中有多少个条目的累积总和为0.9,例如?

如何计算一个数组中有多少个不同的对象?

显示数组中高于特定数字的值并计算有多少个值

R:如何计算网格中每个单元格中有多少个点?

计算Excel中公式中的数组中出现多少个True值

如何计算数组中的每个元素并为每个项目创建键/值对象?

如何计算对象中五个属性中有多少个非空?

计算列表Python中有多少个对象类型

Django - 计算自己中有多少个对象

函数计算超出R中的特定值的数据帧中有多少个观测值

如何计算数组中有多少个字符?

数组中每个项目之前有多少个连续元素要小

计算连续多少个具有相同值的数字

计算Documentum中已更新了多少个对象

计算数据库行中有多少个特定单词

NodeJS计数数组中有多少个对象?

MySQL字符串中数组的多少个值

计算数组中有多少重复?

每个内核有多少个线程?

每个节点有多少个分片?

计算数组angularjs中每个ng模型的值之和

计算数组中每个值的出现次数