0

我有 JSON 数据作为

var myjson = {
            'key1' : {
                'type' : 'key1 type',
                'key1-1' : {
                    'type' : 'key1-1 type',
                    'data' : 'key1-1 value'
                },
                'key1-2' : {
                    'type' : 'key1-2 type',
                    'data' : 'key1-2 value'
                },
                'key1-3' : {
                    'type' : 'key1-3 type',
                    'key1-3-1' : {
                        'type' : 'key1-3-1 type',
                        'data' : 'key1-3-1 value'
                    },
                    'key1-3-2' : {
                        'type' : 'key1-3-2 type',
                        'data' : 'key1-3-1 value'
                    },
                    'key1-3-3': {
                        'type' : 'key1-3-3 type',
                        'key1-3-3-1' : {
                            'type' : 'key1-3-3-1 type',
                            'data' : 'key1-3-3-1 value'
                        },
                        'key1-3-3-2' : {
                            'type' : 'key1-3-3-2 type',
                            'data' : 'key1-3-3-2 value'
                        }
                    }
                }
            }
        };

和动态索引数组:

var index = ['key1', 'key1-3', 'key1-3-3']

我需要使用索引变量在 myjson 中插入数据

myjson['key1']['key1-3']['key1-3-3']['key1-3-3-3'] = {
                            'type' : 'key1-3-3-3 type',
                            'data' : 'key1-3-3-3 value'
                        }

如何实现输出(使用递归、评估、交换或任何方式):

`myjson = {
                'key1':{
                    'type' : 'key1 类型',
                    'key1-1':{
                        '类型' : 'key1-1 类型',
                        “数据”:“key1-1 值”
                    },
                    'key1-2':{
                        'type' : 'key1-2 类型',
                        “数据”:“key1-2 值”
                    },
                    'key1-3':{
                        '类型' : 'key1-3 类型',
                        'key1-3-1':{
                            '类型' : 'key1-3-1 类型',
                            “数据”:“key1-3-1 值”
                        },
                        'key1-3-2':{
                            '类型' : 'key1-3-2 类型',
                            “数据”:“key1-3-1 值”
                        },
                        'key1-3-3':{
                            'type' : 'key1-3-3 类型',
                            'key1-3-3-1':{
                                '类型' : 'key1-3-3-1 类型',
                                “数据”:“key1-3-3-1 值”
                            },
                            'key1-3-3-2':{
                                '类型' : 'key1-3-3-2 类型',
                                '数据' : 'key1-3-3-2 值'
                            },
                            'key1-3-3-3':{
                                '类型' : 'key1-3-3-3 类型',
                                '数据' : 'key1-3-3-3 值'
                            }
                        }
                    }
                }
            };

`
4

2 回答 2

0
var curlevel = myjson;
for (i = 0; i < index.length-1; i++) {
    curlevel = curlevel[index[i]];
}
curlevel[index[i]] = {
    type: newtype,
    data: newdata
};
于 2013-07-04T18:13:03.417 回答
0
var obj = index.reduce(function(obj, key){
    return obj[key];
}, myjson);

obj['key1-3-3-3'] = {
    type: 'key1-3-3-3 type',
    data: 'key1-3-3-3 value'
};

文档在reduce这里:https ://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce

于 2013-07-04T20:05:35.027 回答