Javascript 从数组中添加json键

Javascript 从数组中添加json键,javascript,jquery,arrays,json,dictionary,Javascript,Jquery,Arrays,Json,Dictionary,我试图从数组的项向JSON添加元素,但我很难将元素传递给JSON 这是我的密码: var j={ “根”:{ “a”:“180012003100”, “b”:“150019992001”, “c”:“40,60,50”, “d”:“这是不需要的”, “e”:“也不是这个” } }; 变量根=j.根, l=根.a.拆分(“,”).长度, 散列=[“a”、“b”、“c”]; 对于(变量i=0;i

我试图从数组的项向JSON添加元素,但我很难将元素传递给JSON

这是我的密码:

var j={
“根”:{
“a”:“180012003100”,
“b”:“150019992001”,
“c”:“40,60,50”,
“d”:“这是不需要的”,
“e”:“也不是这个”
}
};
变量根=j.根,
l=根.a.拆分(“,”).长度,
散列=[“a”、“b”、“c”];
对于(变量i=0;ilog(JSON.stringify(j))
您可以使用
Object.keys
,它将在
散列
变量中为您提供对象的键。然后,您的代码将动态检测
Root
对象中所有可能的键:

var j={
“根”:{
“a”:“180012003100”,
“b”:“150019992001”,
“c”:“40,60,50”,
“d”:“152199,21”,
“e”:“15,19200”
}
};
变量根=j.根,
l=根.a.拆分(“,”).长度,
散列=[“a”、“b”、“c”];
对于(变量i=0;ilog(JSON.stringify(j))您可以迭代键并构建新属性

var object={Root:{a:{180012003100],b:'150019992001',c:'40,60,50',d:'this not needed',e:'northis'},
reference=object.Root;
对象
.钥匙(参考)
.forEach(k=>{
var values=reference[k]。拆分(',');
如果(values.length==1){
返回;
}
值。forEach((v,i)=>{
参考['row_'+i]=参考['row_'+i]| |{};
参考['row_u'+i][k]=v;
});        
删除参考文献[k];
});
console.log(对象)

。作为控制台包装{max height:100%!important;top:0;}
您可以使用以下方法获得所需的结果

  • 演示

    const root={
    “根”:{
    “a”:“180012003100”,
    “b”:“150019992001”,
    “c”:“40,60,50”,
    “d”:“这是不需要的”,
    “e”:“也不是这个”
    }
    },
    哈希=[“a”、“b”、“c”],
    keys=Object.keys(root.root);
    让结果=Object.values(root.root).reduce((obj,value,index)=>{
    if(value.match(',')){
    value=value.split(',');
    obj[`row_${index}`]=hash.reduce((对象、键、索引)=>{
    对象[键]=值[索引];
    返回对象;
    }, {});
    }否则{
    obj[键[索引]]=值;
    }
    返回obj;
    }, {})
    
    控制台日志(结果)您拥有的是一个JavaScript对象。数组在哪里?您的预期输出是什么?@phuzi,谢谢您的评论,您能帮忙吗?@AnkitAgarwal数组是散列,我的预期输出是正确的,但我不想显式命名数组中的每个元素loop@Jonathan好的,我添加了一个答案问题是我不会使用对象的所有键,我只会使用那些可以拆分的,你这是什么意思@Jonathan@Jonathan检查now@Andreas钥匙不具体。您可以看到,有一个
    hash
    变量,表示只有
    hash
    中的变量需要为keys@Andreas检查OP的要求。他说他只想要
    hash
    变量,而不是所有的键。因此,可能存在这样的情况,
    hash
    变量与键的名称是已知的。d&e发生了什么事?@Jonathan我也包括了
    d
    &
    e
    。请查收