如何使用jquery检测嵌套对象?

时间:2019-01-03 10:54:35

标签: jquery json object datatables twig

这是我的json文件:

[{"id":1,"name":"Cat","productgroup":[{"id":5,"name":"Animals"},{"id":6,"name":"Female"}]},{"id":2,"name":"Dog","productgroup":[{"id":5,"name":"Animals"},{"id":7,"name":"Male"}]},

这是我将数据加载到数据表中(使用树枝)的方法:

 "columns": [
     {% for key, value in columns %}
     {   "data": "{{ key }}"},
     {% endfor %}
  ]

所以这实际上是在替换它:

 "columns": [
     {"data": "id"},
     {"data": "name"},
     {"data": "productgroup"},
  ]

但是因为“ productgroup”是一个嵌套对象,所以我需要这样做:

 "columns": [
     {"data": "id"},
     {"data": "name"},
     {"data": "productgroup[, ].name"},
  ]

当嵌套对象没有多个值时,我实际上有一个可行的解决方案,只针对单个对象:

 [{"id":3,"name":"Leaf","icon":{"id":4,"name":"leaf"}],

此处的输出必须为:

 "columns": [
         {"data": "id"},
         {"data": "name"},
         {"data": "icon.name"},
      ]

此解决方案非常有效:

"columnDefs": [
      {
        "render": function (data, type, row) {
          var type = typeof data;
          if(type == "object"){
            return data.name;
          } else {
            return data ;
          }
        },

所以我需要的是这样的东西:

"columnDefs": [
          {
            "render": function (data, type, row) {
              var type = typeof data;
              if(type == "object"){
                  if(object is nested){
                  return data[, ].name;
                  } else {
                  return data.name;
                  }
              } else {
                return data ;
              }
            },

1 个答案:

答案 0 :(得分:1)

  

我只需要检测此“ key”:{“ key”:value,“ key”:“ value”}与此“ key”:[{“ key”:value,“ key”:“之间的区别值“}]

您可以使用以下方法简单地检查一个值是否为数组:

Array.isArray(myobject.mykey)

对于foo中的{ foo: { lorem: "ipsum", dolor: "sit" } }返回false,对foo中的{ foo: [{ lorem: "ipsum", dolor: "sit" }] }返回true