我有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' } } } } }; `
答案 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