当对象键存在于javascript中另一个对象的数组中时,重组对象数据

任吉思

我有一个对象数据,其属性如“名称”,“日期”等

const data = {
    "name":{
      "columnName":"name",
      "columnType":"name of employee",
      "values":[
        "sam", "son"
      ],
      "range":{
        "min":0,
        "max":0
      }
    },
    "date":{
      "columnName":"date",
      "columnType":"date input",
      "categoricalValues":[
      ],
      "range":{
        "min":0,
        "max":0
      }
    },
    "fare":{
      "columnName":"fare",
      "columnType":"fare indication",
      "values":[
        "false",
        "true"
      ],
      "range":{
        "min":0,
        "max":0
      }
    },
    "id":{
      "columnName":"id",
      "columnType":"id employee",
      "values":[
      ],
      "range":{
        "min":0,
        "max":0
      }
    }
}

另一个对象categoricalColumns具有一些属性,该属性包含一个数组,其中指定了先前对象的所有属性名称

const categoricalColumns = 
  { 
    "Charges" : ["name" , "fare"],
    "Location" : ["date", "address" ]
  }

如果对象数据的属性,比如说“名称”和“耀斑”存在于categoricalColumns “ charges”内,则需要以这种格式重新构造categoricalcolumn对象

{
    "title" : "Charges",
    "children" : [
      {
        "name":{
          "columnName":"name",
          "columnType":"name of employee",
          "values":[
            "sam", "son"
          ],
          "range":{
            "min":0,
            "max":0
          }
        }
      },
      {
        "fare":{
          "columnName":"fare",
          "columnType":"fare indication",
          "values":[
            "false",
            "true"
          ],
          "range":{
            "min":0,
            "max":0
          }
        }
      }
    ]
  }

预期结果 :

const result = [
  {
    "title" : "Charges",
    "children" : [
      {
        "name":{
          "columnName":"name",
          "columnType":"name of employee",
          "values":[
            "sam", "son"
          ],
          "range":{
            "min":0,
            "max":0
          }
        }
      },
      {
        "fare":{
          "columnName":"fare",
          "columnType":"fare indication",
          "values":[
            "false",
            "true"
          ],
          "range":{
            "min":0,
            "max":0
          }
        }
      }
    ]
  },
  {
    "title" : "Location",
    "children" : [
      {
        "date":{
          "columnName":"date",
          "columnType":"date input",
          "categoricalValues":[
          ],
          "range":{
            "min":0,
            "max":0
          }
        }
      }
    ]
  },
  {
    title : "Others",
    "children" : [
      {
        "id":{
          "columnName":"id",
          "columnType":"id employee",
          "values":[
          ],
          "range":{
            "min":0,
            "max":0
          }
        }
      }
    ]
  }
]

如果数据的某些属性与任何categoricalColumns不匹配,则必须位于“ Others”属性的子级中。

妮娜·斯科茨(Nina Scholz)

您可以选择Set并删除访问过的列。

function restructure(data, categories) {
    var others = new Set(Object.keys(data));

    return Object
        .entries(categories)
        .reduce((r, [title, category]) => {
            var children = category.filter(k => k in data).map(k => ({ [k]: data[k] }));
            if (children.length) r.push({ title, children });
            category.forEach(Set.prototype.delete, others);
            return r;
        }, [])
        .concat(others.size
            ? { title: 'Others', children: Array.from(others, k => ({ [k]: data[k] })) }
            : []
        );
}


var data = { name: { columnName: "name", columnType: "name of employee", values: ["sam", "son"], range: { min: 0, max: 0 } }, date: { columnName: "date", columnType: "date input", categoricalValues: [], range: { min: 0, max: 0 } }, fare: { columnName: "fare", columnType: "fare indication", values: ["false", "true"], range: { min: 0, max: 0 } }, id: { columnName: "id", columnType: "id employee", values: [], range: { min: 0, max: 0 } } },
    categoricalColumns = { Charges: ["name", "fare"], Location: ["date", "address"] },
    result = restructure(data, categoricalColumns);

   console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

检查键/值对是否存在于另一个对象中

来自分类Dev

如果对象键存在于另一个数组中,则在重新选择选择器中使用键控对象扩充对象

来自分类Dev

强迫存在于内存中的对象指向另一个对象?

来自分类Dev

检查对象是否存在于另一个模型外键字段中

来自分类Dev

检查对象值数组是否存在于另一个数组中,但长度不同

来自分类Dev

如何检查一个 json 对象数组中的 id 是否存在于另一个 json 对象嵌套数组中?

来自分类Dev

如何检查一个JavaScript对象中的值是否存在于另一个JavaScript对象中?

来自分类Dev

reactjs如何过滤/检查数组中的任何对象是否存在于另一个对象数组中?

来自分类Dev

如何将一个数组添加到存在于mongodb对象中的另一个数组中

来自分类Dev

如何判断对象的所有值是否存在于另一个对象中

来自分类Dev

Javascript:检查键是否存在于对象数组中

来自分类Dev

检查一个对象中的项目是否存在于另一个对象中(使用下划线)

来自分类Dev

检查一个对象中的项目是否存在于另一个对象中(使用下划线)

来自分类Dev

遍历一个IQueriable(对象A)并检查属性是否存在于另一个IQueriable(对象B)中

来自分类Dev

用 JavaScript 中另一个数组对象的数据替换数组中的对象

来自分类常见问题

Android Room查询对象具有至少一个存在于另一个列表中的项目

来自分类Dev

Android Room查询对象具有至少一个存在于另一个列表中的项目

来自分类Dev

如何键入一个函数,该函数返回对象中存在于属性中的数组中的单个元素

来自分类Dev

当本地字段是另一个集合的对象数组中的键时聚合

来自分类Dev

检查数组的元素是否存在于PHP的另一个数组中

来自分类Dev

检查数组值是否存在于另一个数组中

来自分类Dev

Java8-数组项存在于另一个数组中

来自分类Dev

仅显示存在于另一个数组中的数组元素

来自分类Dev

如何从对象的数组中挑选数据并将其插入Javascript中的对象的另一个数组中?

来自分类Dev

删除对象的键也会删除另一个对象中的键-Javascript

来自分类Dev

PHP在一个数组中查找作为值存在于另一个数组中的键,然后拉回该值

来自分类Dev

交叉表存在于一个数据库中,而不存在于另一个数据库中

来自分类Dev

从JavaScript中的另一个对象创建对象

来自分类Dev

如何转换数组中已经存在于javaScript中的嵌套对象中的对象

Related 相关文章

  1. 1

    检查键/值对是否存在于另一个对象中

  2. 2

    如果对象键存在于另一个数组中,则在重新选择选择器中使用键控对象扩充对象

  3. 3

    强迫存在于内存中的对象指向另一个对象?

  4. 4

    检查对象是否存在于另一个模型外键字段中

  5. 5

    检查对象值数组是否存在于另一个数组中,但长度不同

  6. 6

    如何检查一个 json 对象数组中的 id 是否存在于另一个 json 对象嵌套数组中?

  7. 7

    如何检查一个JavaScript对象中的值是否存在于另一个JavaScript对象中?

  8. 8

    reactjs如何过滤/检查数组中的任何对象是否存在于另一个对象数组中?

  9. 9

    如何将一个数组添加到存在于mongodb对象中的另一个数组中

  10. 10

    如何判断对象的所有值是否存在于另一个对象中

  11. 11

    Javascript:检查键是否存在于对象数组中

  12. 12

    检查一个对象中的项目是否存在于另一个对象中(使用下划线)

  13. 13

    检查一个对象中的项目是否存在于另一个对象中(使用下划线)

  14. 14

    遍历一个IQueriable(对象A)并检查属性是否存在于另一个IQueriable(对象B)中

  15. 15

    用 JavaScript 中另一个数组对象的数据替换数组中的对象

  16. 16

    Android Room查询对象具有至少一个存在于另一个列表中的项目

  17. 17

    Android Room查询对象具有至少一个存在于另一个列表中的项目

  18. 18

    如何键入一个函数,该函数返回对象中存在于属性中的数组中的单个元素

  19. 19

    当本地字段是另一个集合的对象数组中的键时聚合

  20. 20

    检查数组的元素是否存在于PHP的另一个数组中

  21. 21

    检查数组值是否存在于另一个数组中

  22. 22

    Java8-数组项存在于另一个数组中

  23. 23

    仅显示存在于另一个数组中的数组元素

  24. 24

    如何从对象的数组中挑选数据并将其插入Javascript中的对象的另一个数组中?

  25. 25

    删除对象的键也会删除另一个对象中的键-Javascript

  26. 26

    PHP在一个数组中查找作为值存在于另一个数组中的键,然后拉回该值

  27. 27

    交叉表存在于一个数据库中,而不存在于另一个数据库中

  28. 28

    从JavaScript中的另一个对象创建对象

  29. 29

    如何转换数组中已经存在于javaScript中的嵌套对象中的对象

热门标签

归档