将对象数组映射到具有数组的分组对象

ptrugby4141

我认为我的问题很简单,我似乎无法弄清楚。我需要从一组对象中取出:

    let testArrays = [
{ "containerType": "2 Gallon", "wasteType": "10000001", "vol": "2 Gallons" },
{ "containerType": "2 Gallon", "wasteType": "10000001", "vol": "2 Gallons" },
{ "containerType": "2 Gallon", "wasteType": "10000002", "vol": "2 Gallons" },
{ "containerType": "2 Gallon", "wasteType": "10000002", "vol": "2 Gallons" },
{ "containerType": "2 Gallon", "wasteType": "10000003", "vol": "2 Gallons" },
{ "containerType": "5 Gallon", "wasteType": "10000003", "vol": "5 Gallons" },
{ "containerType": "5 Gallon", "wasteType": "10000003", "vol": "5 Gallons" },
{ "containerType": "5 Gallon", "wasteType": "10000003", "vol": "5 Gallons" },
{ "containerType": "5 Gallon", "wasteType": "10000004", "vol": "5 Gallons" }
]   

对于内部带有数组的分组对象,按上面的“wasteType”分组并带有计数。体积将通过将计数乘以“vol”中的值来创建,我可以使用 parsefloat 我相信:

    let wastes = {
        "10000001": [
            {
                "containerType": "2 Gallon",
                "count": 2,
                "vol": "4 Gallons"
            }
        ],
        "10000002": [
            {
                "containerType": "2 Gallon",
                "count": 2,
                "vol": "4 Gallons"
            }
        ],
        "10000003": [
            {
                "containerType": "1 Gallon",
                "count": 1,
                "vol": "2 Gallons"
            },
            {
                "containerType": "5 Gallon",
                "count": 3,
                "vol": "15 Gallons"
            }
        ],
        "10000004": [
            {
                "containerType": "5 Gallon",
                "count": 1,
                "vol": "5 Gallons"
            }
        ],
    }

我知道我应该为此使用 array.map() 但我不知道该怎么做。我到处都在寻找这个特定的例子,但找不到。非常感谢所有帮助。

代码狂人

你需要使用reduce而不是map

  • 循环使用数组wasteType作为属性名称
  • 如果属性已经不在输出对象上,则使用当前元素值初始化
  • 将计数增加 1
  • final再次循环以获得 vol,即count * vol

let testArrays = [{"containerType": "2 Gallon","wasteType": "10000001","vol": "2 Gallons"}, {"containerType": "2 Gallon","wasteType": "10000001","vol": "2 Gallons"}, {"containerType": "2 Gallon","wasteType": "10000002","vol": "2 Gallons"}, {"containerType": "2 Gallon","wasteType": "10000002","vol": "2 Gallons"}, {"containerType": "2 Gallon","wasteType": "10000003","vol": "2 Gallons"}, {"containerType": "5 Gallon","wasteType": "10000003","vol": "5 Gallons"}, {  "containerType": "5 Gallon","wasteType": "10000003","vol": "5 Gallons"}, {"containerType": "5 Gallon","wasteType": "10000003","vol": "5 Gallons"}, {"containerType": "5 Gallon","wasteType": "10000004","vol": "5 Gallons"}]

let final = testArrays.reduce((op, { containerType, wasteType,vol}) => {
  let obj = { containerType, vol, count: 0 }
  op[wasteType] = op[wasteType] || new Map([[containerType,obj]])
  if(op[wasteType].has(containerType)){
    op[wasteType].get(containerType).count++
  } else{
    obj.count++
    op[wasteType].set(containerType, obj)
  }
  return op
}, {})

for(let key in final){
  final[key] = [...final[key].values()].map(value=>{
  let { containerType, vol, count} = value
  let finalVol = (vol.replace(/[.\D+]/g, '') * count) + " Gallons"
   return { containerType, vol:finalVol, count }
  })
}

console.log(final)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

AutoMapper将对象映射到数组

来自分类Dev

将对象数组展平,排序并映射到哈希数组(具有一些折叠值)中

来自分类Dev

将具有数组的数组映射到数组

来自分类Dev

JQ将数组映射到具有索引的对象-如何

来自分类Dev

如何使用Ramda将对象数组映射到单个对象

来自分类Dev

如何使用Ramda将对象数组映射到单个对象

来自分类Dev

将对象映射到 ES6 中的对象数组

来自分类Dev

如何将对象数组映射到Q Promise数组

来自分类Dev

ES6将对象数组映射到数组

来自分类Dev

如何将对象数组映射到Q Promise数组

来自分类Dev

将对象数组转换为具有数组值的对象

来自分类常见问题

在Swift中将对象数组映射到Dictionary

来自分类Dev

将对象数组动态映射到表行

来自分类Dev

如何将对象值映射到可观察数组

来自分类Dev

Automapper -> 将对象的命名属性映射到数组属性

来自分类Dev

根据单独的对象将数组映射到具有深度的对象

来自分类Dev

具有数组原型的javascript对象

来自分类Dev

创建具有数组值的对象

来自分类Dev

选择具有数组的对象的道具

来自分类Dev

JavaScript将对象数组映射到新对象新数组的最短方法?

来自分类Dev

将对象数组映射到另一个对象数组中

来自分类Dev

如何将对象映射中的数组映射到另一个数组

来自分类Dev

jq将对象键值映射到包含两个对象的对象数组

来自分类Dev

按值将对象数组映射到新的数组数组中

来自分类Dev

将数组映射到对象数组

来自分类Dev

有没有一种方法可以将对象中的值映射到javascript中数组的索引?

来自分类Dev

JavaScript:如何将具有嵌套数组的对象映射到表以进行React

来自分类Dev

Dataweave 2如何将对象映射到对象的JSON数组

来自分类Dev

Dataweave 2如何将对象映射到对象的JSON数组

Related 相关文章

  1. 1

    AutoMapper将对象映射到数组

  2. 2

    将对象数组展平,排序并映射到哈希数组(具有一些折叠值)中

  3. 3

    将具有数组的数组映射到数组

  4. 4

    JQ将数组映射到具有索引的对象-如何

  5. 5

    如何使用Ramda将对象数组映射到单个对象

  6. 6

    如何使用Ramda将对象数组映射到单个对象

  7. 7

    将对象映射到 ES6 中的对象数组

  8. 8

    如何将对象数组映射到Q Promise数组

  9. 9

    ES6将对象数组映射到数组

  10. 10

    如何将对象数组映射到Q Promise数组

  11. 11

    将对象数组转换为具有数组值的对象

  12. 12

    在Swift中将对象数组映射到Dictionary

  13. 13

    将对象数组动态映射到表行

  14. 14

    如何将对象值映射到可观察数组

  15. 15

    Automapper -> 将对象的命名属性映射到数组属性

  16. 16

    根据单独的对象将数组映射到具有深度的对象

  17. 17

    具有数组原型的javascript对象

  18. 18

    创建具有数组值的对象

  19. 19

    选择具有数组的对象的道具

  20. 20

    JavaScript将对象数组映射到新对象新数组的最短方法?

  21. 21

    将对象数组映射到另一个对象数组中

  22. 22

    如何将对象映射中的数组映射到另一个数组

  23. 23

    jq将对象键值映射到包含两个对象的对象数组

  24. 24

    按值将对象数组映射到新的数组数组中

  25. 25

    将数组映射到对象数组

  26. 26

    有没有一种方法可以将对象中的值映射到javascript中数组的索引?

  27. 27

    JavaScript:如何将具有嵌套数组的对象映射到表以进行React

  28. 28

    Dataweave 2如何将对象映射到对象的JSON数组

  29. 29

    Dataweave 2如何将对象映射到对象的JSON数组

热门标签

归档