这主要是一个Javascript / JSON问题,但是,如果有人知道Webix解决方案,我也很乐意。
背景
我正在使用Webix作为Javascript UI框架。目前,我正在使用类似如下的JSON数据填充Webix Datatable:
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
并引用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中作为单个对象而不是对象集合出现。
所以我的问题是这个
如何以Javsacript / Webix知道它是集合/或数组的方式引用complexData.configs
?
或
是否有一种方法可以获取(映射?)Webix来解析complexData.configs
,以便将其中的对象识别为数据表行?
谢谢。
答案 0 :(得分:1)
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均不支持此功能,但是有多个polyfills可用