Javascript通过索引转到内部键
我有一个Javascript对象,如下所示:Javascript通过索引转到内部键,javascript,Javascript,我有一个Javascript对象,如下所示: var json = { a : "xxxx", b : { p : 12, a : "xxxx", b : { r : 1, a : "xxxx", b : null } } } 我想要一个函数,作为参数传入一个键、一个索引和一个对象,将最后一个对象添加到索引指示的内部级别的对象中。 我
var json = {
a : "xxxx",
b : {
p : 12,
a : "xxxx",
b : {
r : 1,
a : "xxxx",
b : null
}
}
}
我想要一个函数,作为参数传入一个键、一个索引和一个对象,将最后一个对象添加到索引指示的内部级别的对象中。
我知道,我没有很好地解释一个例子:
function addObjectToJSON(key,index,object){
var helpJSON = json;
for(var i = 0; i < index; i++){
helpJSON = helpJSON[key];
}
helpJSON = object;
}
是:
}
//addObjectToJSON
function addObjectToJSON(key,index,object,indexes = ""){
if(index < 0){
return false;
}
var jsonHelp = json;
if(indexes != ""){
var indexesSplit = indexes.split(".");
for(var i = 0; i < indexesSplit.length; i++){
jsonHelp = jsonHelp[indexesSplit[i]];
}
}else{
if(index == 0){
json[key] = object;
console.log(json);
return false;
}
}
for(keyHelp in jsonHelp){
if(key == keyHelp){
index--;
if(indexes == ""){
indexes = key;
}else{
indexes += "."+key;
}
if(index > -1){
addObjectToJSON(key,index,object,indexes);
break;
}
}
};
if(index <= -1){
jsonHelp[key] = object;
var indixesHelp = ""
for(var i = 0; i < indexesSplit.length; i++){
indixesHelp += "."+indexesSplit[i];
}
eval("json"+indixesHelp+" = jsonHelp");
console.log(json);
}
}
这看起来像一个对象,而不是json。我不确定index这个词是否正确。你是说筑巢水平吗?我看不到与索引的联系。论点2的作用是什么?你能提供其他数字的例子吗?我完全不知道你的问题是什么,我花了一些时间试图弄明白。。。
var json = {
a : "xxxx",
b : {
p : 12,
a : "xxxx",
b : {
r : 1,
a : "xxxx",
b : {
a : 2,
b : null
}
}
}
}
var json = {
a : "xxxx",
b : {
p : 12,
a : "xxxx",
b : {
r : 1,
a : "xxxx",
b : null
}
}
function addObjectToJSON(key,index,object,indexes = ""){
if(index < 0){
return false;
}
var jsonHelp = json;
if(indexes != ""){
var indexesSplit = indexes.split(".");
for(var i = 0; i < indexesSplit.length; i++){
jsonHelp = jsonHelp[indexesSplit[i]];
}
}else{
if(index == 0){
json[key] = object;
console.log(json);
return false;
}
}
for(keyHelp in jsonHelp){
if(key == keyHelp){
index--;
if(indexes == ""){
indexes = key;
}else{
indexes += "."+key;
}
if(index > -1){
addObjectToJSON(key,index,object,indexes);
break;
}
}
};
if(index <= -1){
jsonHelp[key] = object;
var indixesHelp = ""
for(var i = 0; i < indexesSplit.length; i++){
indixesHelp += "."+indexesSplit[i];
}
eval("json"+indixesHelp+" = jsonHelp");
console.log(json);
}
}