Javascript 将JSON数组追加到现有JSON数组

Javascript 将JSON数组追加到现有JSON数组,javascript,json,Javascript,Json,我有两个JSON对象数组-CAD和uploads: { "cad":[ { "cad_id":246, "call_operator":"controller", "user_id":"136", "date":"2017-12-12 20:44:30", } ], "uploads":[ { "file_id":"1", "cad_i

我有两个JSON对象数组-
CAD
uploads

{
   "cad":[
      {
         "cad_id":246,
         "call_operator":"controller",
         "user_id":"136",
         "date":"2017-12-12 20:44:30",
      }
   ],
   "uploads":[
      {
         "file_id":"1",
         "cad_id":"246",
         "file_category":"prf",
         "file_name":"e9283220bacfe5ca5c6a7edadef37e83.pdf"
      },
      {
         "file_id":"2",
         "cad_id":"246",
         "file_category":"radio_log",
         "file_name":"62d72ee7f69e17b54848df082dd72323.pdf"
      }
   ]
}
我希望将
上传
数组附加到
cads
数组中,使其位于
cads
数组中,而不是拥有两个单独的数组

{
   "cad":[
      {
         "cad_id":246,
         "call_operator":"controller",
         "user_id":"136",
         "date":"2017-12-12 20:44:30",
         "uploads":[
          {
             "file_id":"1",
             "cad_id":"246",
             "file_category":"prf",
             "file_name":"e9283220bacfe5ca5c6a7edadef37e83.pdf"
          },
          {
             "file_id":"2",
             "cad_id":"246",
             "file_category":"radio_log",
             "file_name":"62d72ee7f69e17b54848df082dd72323.pdf"
          }
       ]
      }
   ]
}
如果有帮助的话,
cad
数组中只有一个元素。
上传
数组可以有多个项目


如何在JS(或jQuery)中实现这一点?

只需将
上传到您想要的地方即可

data.cad[0].uploads = data.uploads;
这假设JSON已被解析为JS对象,由
data
变量持有


然后,如果愿意,您可以删除原始的
上传
属性

delete data.uploads;
一种方法-

var json={
“cad”:[
{
“cad_id”:246,
“呼叫操作员”:“控制器”,
“用户id”:“136”,
“日期”:“2017-12-12 20:44:30”,
}
],
“上载”:[
{
“文件id”:“1”,
“cad_id”:“246”,
“文件类别”:“prf”,
“文件名”:“e9283220bacfe5ca5c6a7edadeef37e83.pdf”
},
{
“文件id”:“2”,
“cad_id”:“246”,
“文件类别”:“无线电日志”,
“文件名”:“62d72ee7f69e17b54848df082dd72323.pdf”
}
]
}
var newObj={};
newObj.cad=json.cad;
newObj.cad[0].uploads=json.uploads;
console.log(newObj)
var myArray={
“cad”:[
{
“cad_id”:246,
“呼叫操作员”:“控制器”,
“用户id”:“136”,
“日期”:“2017-12-12 20:44:30”,
}
],
“上载”:[
{
“文件id”:“1”,
“cad_id”:“246”,
“文件类别”:“prf”,
“文件名”:“e9283220bacfe5ca5c6a7edadeef37e83.pdf”
},
{
“文件id”:“2”,
“cad_id”:“246”,
“文件类别”:“无线电日志”,
“文件名”:“62d72ee7f69e17b54848df082dd72323.pdf”
}
]
};
myArray.cad[0]。上载=myArray.uploads;
var newArray=myArray.cad;

log(newArray)
您可以使用
reduce
通过
cad\u id
组合阵列:

let obj={“cad”:[{“cad_id”:246,“call_operator”:“controller”,“user_id”:“136”,“date”:“2017-12-12 20:44:30”,“uploads”:[{“file_id”:“1”,“cad_id”:“246”,“file_category”:“prf”,“file_name”:“e9283220BACF5CA5CA5CA7EDADEF37E83.pdf”;“{“file_id”:“2”,“cad_id”:“246;”246;,“file_category”:“radio_log”,“fileĂe727; e7D7D727;”;“fileγe7; 727;;
obj=obj.uploads.reduce((a,b)=>{
const e=a.find(e=>e.cad\u id==b.cad\u id);
如果(!e)返回一个;//将此更改为对未找到的cat_id执行其他操作
e、 上传=(e.uploads | |[]).concat(b);
返回a;
},obj.cad);

控制台日志(obj)循环每次上载并找到相应的cad。如果属性不存在,则创建该属性,并将该上载添加到该属性中。然后最后删除
数据。上传

data.uploads.forEach(u=>{
var cad=data.cad.find(c=>+c.cad_id===+u.cad_id)|{};
cad.uploads=(cad.uploads | |[]).concat(u);
});
删除数据。上传;
console.log(数据)

风险值数据={
“cad”:[{
“cad_id”:246,
“呼叫操作员”:“控制器”,
“用户id”:“136”,
“日期”:“2017-12-12 20:44:30”,
}],
“上载”:[{
“文件id”:“1”,
“cad_id”:“246”,
“文件类别”:“prf”,
“文件名”:“e9283220bacfe5ca5c6a7edadeef37e83.pdf”
},
{
“文件id”:“2”,
“cad_id”:“246”,
“文件类别”:“无线电日志”,
“文件名”:“62d72ee7f69e17b54848df082dd72323.pdf”
}
]
}

您可以使用哈希表获取具有相同
cad\u id
的元素,并将上载对象推送到正确的数组中

分配后,从对象中删除属性
上载

var数据={cad:[{cad id:246,呼叫操作员:“控制器”,用户id:“136”,日期:“2017-12-12 20:44:30”),上传:[{文件id:“1”,cad id:“246”,文件类别:“prf”,文件名:“E9283220BACFE5CA5C6A7EDAEDEF37E83.pdf”},文件id:“2”,cad id:“246”,文件类别:“无线电日志”,文件名:“62D72EE7BEE7B54848DF082DD83.pdf”},
hash=Object.create(null);
数据.cad.forEach(函数(o){
散列[o.cad_id]=(o.uploads=[]);
});
data.uploads.forEach(函数(o){
哈希[o.cad\u id].push(o);
});
删除数据。上传;
控制台日志(数据)
。作为控制台包装{最大高度:100%!重要;顶部:0;}
真的吗?对象的字符串表示形式?