Javascript 如何在angular中更改json响应格式
我用的是角2+ api json响应如下所示Javascript 如何在angular中更改json响应格式,javascript,Javascript,我用的是角2+ api json响应如下所示 { data:[ {name: "2020-04-28", value: "1", label: "current"} {name: "2020-04-28", value: "2", label: "target"} {name: "2020-04-29", value: "2", label: "current"} {name: "2020-04-29", value: "3", label: "target"}
{
data:[
{name: "2020-04-28", value: "1", label: "current"}
{name: "2020-04-28", value: "2", label: "target"}
{name: "2020-04-29", value: "2", label: "current"}
{name: "2020-04-29", value: "3", label: "target"}
{name: "2020-04-30", value: "6", label: "current"}
{name: "2020-04-30", value: "7", label: "target"}
]
}
我必须将上述api响应格式更改为
{
data: [
{
name: "Current",
value: [1, 2, 6]
},
{
name: "Target",
value: [2, 3, 7]
}
]
}
有人能帮我改变json响应的格式吗?请给我解释,让我理解代码 试着做这样的事情 首先安装,然后您可以使用此代码
let data = {
data:[
{name: "2020-04-28", value: "1", label: "current"},
{name: "2020-04-28", value: "2", label: "target"},
{name: "2020-04-29", value: "2", label: "current"},
{name: "2020-04-29", value: "3", label: "target"},
{name: "2020-04-30", value: "6", label: "current"},
{name: "2020-04-30", value: "7", label: "target"}
]
}
let dataGroup = _.groupBy(data.data, "label")
let loopNo = Object.keys(_.groupBy(data.data, "label"))
console.log("a", loopNo)
let formatedDate = []
for(let i in loopNo) {
formatedDate.push({
"name": i,
"value": datagroup[i]
})
}
风险值数据={
数据:[
{名称:2020-04-28,值:1,标签:current},
{名称:2020-04-28,值:2,标签:target},
{名称:2020-04-29,值:2,标签:当前},
{名称:2020-04-29,值:3,标签:target},
{名称:2020-04-30,值:6,标签:当前},
{名称:2020-04-30,值:7,标签:target}
]
}
var storeArray=[]
变量filterData=[];
data.data.forEacheach=>{
if!storeArray.includeseach.label{
storeArray.pusheach.label;
filterData.push{
名称:each.label,
值:[每个值]
};
}否则{
filterData[storeArray.indexOfeach.label].value.pusheach.value;
}
}
console.logfilterData
设x={
数据:[
{名称:2020-04-28,值:1,标签:current},
{名称:2020-04-28,值:2,标签:target},
{名称:2020-04-29,值:2,标签:当前},
{名称:2020-04-29,值:3,标签:target},
{名称:2020-04-30,值:6,标签:当前},
{名称:2020-04-30,值:7,标签:target},
{名称:2020-04-30,值:8,标签:target},
{名称:2020-04-30,值:9,标签:get}
]
};
设obj={
数据:[]
};
函数setCharAtstr,索引,chr{
如果index>str.length-1返回str;
返回str.substr0,index+chr+str.substrindex+1;
}
x、 data.forEachitem=>{
让index=obj.data.findIndexdi=>{return di.name==setCharAtitem.label,0,item.label.charAt0.toUpperCase};
如果索引>-1{
obj.data[index].value.pushitem.value;
}否则{
obj.data.push{
名称:setCharAtitem.label,0,item.label.charAt0.toUpperCase,
价值:[项目价值]
};
}
};
console.logJSON.stringifyobj 这可能是一种幼稚的、未经优化的方法,但它是有效的 常数数据={ 数据:[ {名称:2020-04-28,值:1,标签:current}, {名称:2020-04-28,值:2,标签:target}, {名称:2020-04-29,值:2,标签:当前}, {名称:2020-04-29,值:3,标签:target}, {名称:2020-04-30,值:6,标签:当前}, {名称:2020-04-30,值:7,标签:target} ] }; 让newData=[] data.data.foreach=>{ ifnewData.length==0{ newData.push{ 名称:e.label, 价值:[即价值] }; }否则{ 让foundIndex=newData.findIndexfi=>fi.name==e.label; iffoundIndex>=0{ newData[foundIndex].value.push.value; }否则{ newData.push{ 名称:e.label, 价值:[即价值] }; } } }; console.lognewData 使用JSON.parse,如下所示
var txt = '{"name":"John", "age":30, "city":"New York"}'
var obj = JSON.parse(txt);
document.getElementById("demo").innerHTML = obj.name + ", " + obj.age;
这回答了你的问题吗?