Javascript 修剪JS对象以删除带有花括号的额外参数
我这里有一个对象响应Javascript 修剪JS对象以删除带有花括号的额外参数,javascript,arrays,typescript,ecmascript-6,Javascript,Arrays,Typescript,Ecmascript 6,我这里有一个对象响应 result.joblist = { "collection_job_status_list": [ { "application_context": { "application_id": "a4", "context_id": "c4" }, "creation_time": "15699018476102", "progress": 100, "status": "
result.joblist = {
"collection_job_status_list": [
{
"application_context": {
"application_id": "a4",
"context_id": "c4"
},
"creation_time": "15699018476102",
"progress": 100,
"status": "READY",
"phase": "ACTIVE",
"job_error": {}
},
{
"application_context": {
"application_id": "a6",
"context_id": "c6"
},
"creation_time": "15698648632523",
"progress": 100,
"status": "READY",
"phase": "ACTIVE",
"job_error": {}
}
],
"result": {
"request_result": "ACCEPTED",
"error": {}
}
}
这里需要去掉{“application\u context”:&ending}
,只需要application\u id:“a4”,“context\u id:“c4”
处于同一级别
我曾经尝试过这样的事情,但没有成功
var newObj: any = {};
if (allJobs && allJobs.length > 0) {
// this.rowData = this.allJobs;
// this.allJobs = this.allJobs['application_id'];
//let ele:object = allJobs.application_context;
allJobs.forEach(ele => {
newObj = {
application_id: ele.application_context.application_id,
context_id: ele.application_context.application_context
};
return newObj;
});
}
您可以使用
映射
和解构
- 从结果中获取收集作业状态列表
- 在值上循环从
键,并与其余值合并application\u上下文中取出所需的值
- 构建与原始结果相同的结构
let result={“collection\u job\u status\u list”:[{“application\u context”:{“application\u id”:“a4”,“context\u id”:“c4”;“creation\u time”:“15699018476102”,“progress”:100,“status”:“READY”,“phase”:“ACTIVE”,“job\u error”:{},{“application\u context\u context”:{“application\u id”:“a6”;“c6”;“creation\u time”:“15698648648633”,“progress”:100,“status”“:”准备“,”阶段“:”活动“,”作业错误“:{}}],”结果“:{”请求结果“:”已接受“,”错误“:{}}”
让{collection\u job\u status\u list,…rest}=result
let modified=集合\作业\状态\列表.map(({
应用程序上下文:{
应用程序id,
上下文id
},
休息
})=>({…rest,上下文\ id,应用程序\ id}))
让最终={
集合\作业\状态\列表:已修改,
休息
}
console.log(final)
您需要使用map
功能
constresult={};
result.joblist={
“收集作业状态列表”:[
{
“应用程序上下文”:{
“应用程序id”:“a4”,
“上下文id”:“c4”
},
“创建时间”:“15699018476102”,
“进展”:100,
“状态”:“就绪”,
“阶段”:“活动”,
“作业错误”:{}
},
{
“应用程序上下文”:{
“应用程序id”:“a6”,
“上下文id”:“c6”
},
“创建时间”:“1569864832523”,
“进展”:100,
“状态”:“就绪”,
“阶段”:“活动”,
“作业错误”:{}
}
],
“结果”:{
“请求结果”:“已接受”,
“错误”:{}
}
}
result.joblist.collection\u job\u status\u list=result.joblist.collection\u job\u status\u list.map(项=>{
返回{
“应用程序id”:item.application\u context.application\u id,
“context\u id”:item.application\u context.context\u id
}
})
console.log(result)
这里需要的是一张地图。参考:
尝试按如下所示修改代码,您将获得预期的输出
var newObj: any = {};
var newArray;
if (allJobs && allJobs.length > 0) {
newArray = allJobs.map(ele => {
newObj = {
application_id: ele.application_context.application_id,
context_id: ele.application_context.application_context
};
return newObj;
});
}
希望这有帮助:)var newObj:any={};如果(allJobs&&allJobs.length>0){//this.rowData=this.allJobs;//this.allJobs=this.allJobs['application\u id'];//让ele:object=allJobs.application\u context;allJobs.forEach(ele=>{newObj={“application\u id”:ele.application\u context.application\u id),“context_id”:ele.application_context.application_context}返回newObj;});}您的预期输出是什么,是否可以更新有问题的内容?我们是否需要从对象中删除应用程序上下文属性,并且这些内部属性希望位于根对象中?是的,希望保持其他属性不变。谢谢,最好避免使用新变量或将结果存储在新对象中。看起来不错,谢谢!我如何保持这些属性不变e其他项目(与同一级别的其他项目一样)以及…应用程序_context@Gaurav总是乐于助人:),