从不同的数组处理索引的JSON数据

时间:2013-07-04 17:57:27

标签: javascript jquery

我有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'
                        }

如何实现输出(使用递归,eval,交换或以任何方式):

`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'
                            },
                            'key1-3-3-3' : {
                                'type' : 'key1-3-3-3 type',
                                'data' : 'key1-3-3-3 value'
                            }
                        }
                    }
                }
            };

`

2 个答案:

答案 0 :(得分:0)

var curlevel = myjson;
for (i = 0; i < index.length-1; i++) {
    curlevel = curlevel[index[i]];
}
curlevel[index[i]] = {
    type: newtype,
    data: newdata
};

答案 1 :(得分: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