gpt4 book ai didi

Javascript/Webix 将对象引用为数组

转载 作者:行者123 更新时间:2023-11-30 20:03:54 26 4
gpt4 key购买 nike

这主要是一个 Javascript/JSON 问题,但是如果有人知道 Webix 解决方案,我也愿意接受。

背景

我正在使用 Webix作为 Javascript UI 框架。目前我正在填充 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 并引用 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,以便将其中的对象识别为数据表行?

谢谢。

最佳答案

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 中都不支持,但是有几个 polyfills可用

关于Javascript/Webix 将对象引用为数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53111087/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com