Javascript / Webix ссылаются на объекты как массивы

1

Это, прежде всего, вопрос Javascript/JSON, однако, если кто-либо знает о решении Webix, я также открыт для этого.

Фон

Я использую Webix в качестве интерфейса пользовательского интерфейса Javascript. В настоящее время я заполняю данные Webix Datatable с данными JSON, которые выглядят примерно так:

complexData = {
  "metadata": {
    "itemno": 111222333,
    "groupid": 19,
    "name": "Blah"
  },
  "configs": [
    {
      "id": 1,
      "name": "First",
      "description": "some stuff",
      "value": 222
    },
    {
      "id": 3,
      "name": "Third",
      "description": "Foo",
      "value": 333
    }
  ],
  "system": null
}

Я инициализирую свой компонент Datatable, например:

webix.ui({
    view:"datatable",
    columns:[
        { id:"id", header:"ID" },
        { id:"name", header:"Name" },        
        { id:"description", header:"Description", fillspace: true },
        { id:"value", header:"Value" }
    ],
    data: complexData.configs
});

Это отлично работает.

Вы можете видеть, что здесь выглядит: https://snippet.webix.com/4jd9cobb.

Как вы можете видеть, я просто " complexData до" complexData и complexData configs, чтобы получить данные для моего компонента.

Однако (из-за обработки, которую я должен выполнить позже), мне нужно немного изменить структуру данных. Мне нужно, чтобы объекты внутри configs были введены на основе их id, что может быть произвольным. Это, конечно, означает, что configs теперь является объектом объектов, а не только массивом:

complexData = {
  "metadata": {
    "itemid": 111222333,
    "groupid": 19,
    "name": "Blah"
  },
  "configs": {
    "1": {
      "id": 1,
      "name": "First",
      "description": "some stuff",
      "value": 222
    },
    "3": {
      "id": 3,
      "name": "Third",
      "description": "Foo",
      "value": 333
    }
    },
  "system": null
}

Это больше не отображает мои строки.

Вот как это выглядит: https://snippet.webix.com/n8ypdeia

подробности

Если я console.log мой рабочий результат (массив), я получаю следующее:

(2) [{…}, {…}]
  0: {id: 1, name: "First", description: "some stuff", value: 222 }
  1: {id: 3, name: "Third", description: "Foo", value: 333 }
  length: 2

Мой неудачный результат (объект объектов) дает это:

{1: {…}, 2: {…}}
  1: {id: 1, name: "First", description: "some stuff", value: 222 }
  3: {id: 3, name: "Third", description: "Foo", value: 333 }

Таким образом, complexData.configs появляется в Javascript/Webix как единый объект, а не как набор объектов.

Поэтому мой вопрос таков:

Как я могу ссылаться на complexData.configs таким образом, что Javsacript/Webix знает его как коллекцию/или как массив?

или же

Есть ли способ получить (сопоставление?) Webix для синтаксического анализа complexData.configs чтобы он распознавал объекты внутри как строки данных?

Благодарю.

Теги:
arrays
webix

1 ответ

1
Лучший ответ

Там довольно простое решение, которое можно найти в Object.values()

const complexData = {
  "configs": {
    "1": {
      "id": 1,
      "name": "First",
      "description": "some stuff",
      "value": 222
    },
    "3": {
      "id": 3,
      "name": "Third",
      "description": "Foo",
      "value": 333
    }
  }
}

console.info(Object.values(complexData.configs))

Это не поддерживается ни в одной версии Internet Explorer, но доступно несколько полиполков

Ещё вопросы

Сообщество Overcoder
Наверх
Меню