Как я могу обнаружить вложенный объект с помощью jquery? - PullRequest
0 голосов
/ 03 января 2019

Это мой файл 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 голосов
/ 03 января 2019

Мне просто нужно обнаружить разницу между этим "ключом": {"ключом": значением, "ключом": "значением"} и этим "ключом": [{"ключом": значением, "ключом": " значение "}]

Вы можете просто проверить, является ли значение массивом, используя:

Array.isArray(myobject.mykey)

Возвращает false для foo в { foo: { lorem: "ipsum", dolor: "sit" } } и возвращает true для foo в { foo: [{ lorem: "ipsum", dolor: "sit" }] }

...