Javascript 从对象动态创建JSON数组

Javascript 从对象动态创建JSON数组,javascript,jquery,json,Javascript,Jquery,Json,我有一个对象A,如下所示 var A = { "1": [ "1_1", "1_2", "1_3" ], "2": [ "2_1", "2_2" ] }; 需要使用js动态构建新阵列。假设 对象一个键应该映射到数组AA的属性文本,值应该映射到子对象,如下所示 var AA = [ { "text": "1", "state": "open", "children": [ { "text": "1_1

我有一个对象
A
,如下所示

var A = {
    "1": [ "1_1", "1_2", "1_3" ],
    "2": [ "2_1", "2_2" ]
};
需要使用js动态构建新阵列。假设
对象一个键应该映射到数组AA的属性文本,值应该映射到子对象,如下所示

var AA = [
    {
        "text": "1",
        "state": "open",
        "children": [
            { "text": "1_1" }, 
            { "text": "1_2" }, 
            { "text": "1_3" }
        ]
    }, 
    {
        "text": "2",
        "state": "open",
        "children": [
            { "text": "2_1" }, 
            { "text": "2_2" }
        ]
    }
];
这是我的功能,但它没有按预期工作。有人能帮忙吗

function constructJSONArr() {
    var A = {
        "1": [ "1_1", "1_2", "1_3" ],
        "2": [ "2_1", "2_2" ]
    };

    for (var key in A) {
        var tempArr = [];
        tempArr.push(key);
        for (var i = 0; i < key.length; i++) {
            return {
                'text': key,
                'state': 'closed',
                'children': A[key].map(function(child) {
                    return {
                        'text': child
                    };
                })
            }
        }
    }
}
函数构造函数jsonarr(){ 变量A={ "1": [ "1_1", "1_2", "1_3" ], "2": [ "2_1", "2_2" ] }; for(A中的var键){ var tempArr=[]; tempArr.push(键); 对于(变量i=0;i在函数内部返回时,函数结束并立即返回。在您的例子中,for循环中的
return
会导致函数返回第一个键对象。要解决这个问题,您需要创建对象并将它们推入arr。您可以在
Array.map()
中自由返回,因为每次迭代都会调用一个函数

固定解决方案:

重复使用。获取
。将新对象推入
arr
。使用
作为
文本
属性、
状态
子项
。要创建子对象,请通过
键从原始对象获取数组,并使用生成子对象。返回
arr

var A={
"1": ["1_1", "1_2", "1_3"],
"2": ["2_1", "2_2"]
};
函数构造函数JSONARR(A){
var-arr=[];
for(A中的var键){
arr.push({
文本:键,
声明:“已关闭”,
子项:A[key].map(函数(t){
返回{
文本:t
};
})
});
}
返回arr;
}
var结果=ConstructionJSONARR(A);

控制台日志(结果)
您可以使用
Object.keys()
迭代对象,并使用
Array.map
创建新数组

var A={
"1": ["1_1", "1_2", "1_3"],
"2": ["2_1", "2_2"]
};
var transformed=Object.keys(A).map(key=>{
返回{
文本:键,
声明:“开放”,
子项:一个[key].map(值=>{
返回{
文本:值
};
})
};
});

console.log(已转换)什么不起作用?你有什么错误?