gpt4 book ai didi

javascript - 动态创建嵌套的 JSON 对象?

转载 作者:行者123 更新时间:2023-11-29 18:21:43 24 4
gpt4 key购买 nike

我几乎已经完成了,但似乎无法按计划实现此功能。

我有 json 'jsonData' 它包含不同术语的公式

"jsonData":{
"a" : "b + c",
"b" : "d + e",
"d" : "h + i",
"c" : "f + g"
}

我想做的是让函数传递一个参数“mainItem”(即“jsonData”中的键之一,例如“jsonData”中的 a)。在此函数中,它将从 json 数据中获取公式(例如 a 是“mainitem”,b + c 是公式)并检查公式子组件的依赖性,即它将检查bc 在 json 数据中是否有任何依赖关系。如果它有任何依赖项,它将作为子组件添加到父组件,例如,如果 b 在 json 数据中有一个公式。 b 将作为“mainitem”添加到父“mainitem”a 的子组件中。在代码的最后,这就是我想要得到的。

{
mainitem : "a",
formula : "b+c",
childComponent: {
mainitem: "b",
formula : "d+e",
childcomponent: {
mainitem: "d",
formula : "h+i"
}
},
{
mainitem: "c",
formula : "f+g"
},
}

问题是我能够创建父对象。但是我不知道如何为父组件创建子组件,如果子组件有子组件,它也会作为子组件的子组件嵌入等等。它就像一个父子层次系列

function getJson(mainItem) {
var json = {};
json['mainitem'] = mainItem;
$.each(jsonData, function(key, value){
if(mainitem == key){
json['formula'] = value;
}
})
}

任何对此的见解都将不胜感激。谢谢。

最佳答案

您需要/可以编写一个递归函数,将“公式”拆分为每个构成组件/项目,然后检查每个组件/项目的依赖关系。

这里有一个解决方案:http://jsfiddle.net/mqchen/4x7cD/

function getJson(item, data) {

if(!data["jsonData"].hasOwnProperty(item)) return null;

var out = {
mainItem: item,
formula: data["jsonData"][item]
};

// Break up formula
var components = out.formula.split(" ");

for(var i = 0; i < components.length; i++) {
var child = getJson(components[i], data); // Recursive call to get childComponents
if(child !== null) {
out["childComponent"] = out["childComponent"] == undefined ? [] : out["childComponent"];
out["childComponent"].push(child);
}
}

return out;
}

// Call it
getJson("a", data)

注意:它不考虑循环依赖,即如果你有a: "b + c", b: "d + a"

关于javascript - 动态创建嵌套的 JSON 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17963351/

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