我从后端获取了一个JSON负载。数据包含一个带有对象的payload
数组。通过某些方式,我想将数组中的这些对象转换为一个对象,并且selectedDate
日期为自己的数组。JSON负载如下所示:
{
"success": true,
"payload": [
{
"weekNumber": 40,
"sortOrder": 1,
"label": "autumn",
"numberOfPossibleDays": 3,
"editable": true,
"selectedDate": "2020-09-29",
"deliveryDays": [
{
"date": "2020-09-28",
"contactPerson": null,
"phoneNumber": null,
"contactPerson2": null,
"phoneNumber2": null,
"selected": false
},
{
"date": "2020-09-29",
"contactPerson": "John",
"phoneNumber": "99887744",
"contactPerson2": "Tom",
"phoneNumber2": "40040000,
"selected": true
},
{
"date": "2020-09-30",
"contactPerson": null,
"phoneNumber": null,
"contactPerson2": null,
"phoneNumber2": null,
"selected": false
}
]
},
{
"weekNumber": 53,
"sortOrder": 2,
"label": "christmas",
"numberOfPossibleDays": 2,
"editable": true,
"selectedDate": "2020-12-29",
"deliveryDays": [
{
"date": "2020-12-28",
"contactPerson": null,
"phoneNumber": null,
"contactPerson2": null,
"phoneNumber2": null,
"selected": false
},
{
"date": "2020-12-29",
"contactPerson": "Doe,
"phoneNumber": "99999999",
"contactPerson2": "Foo",
"phoneNumber2": "44552200",
"selected": true
}
]
}
]
}
我想做的是得到这样的输出对象:
{
autumn=firstContactPersonName: "John",
autumn=firstContactPersonPhone: "46442644",
autumn=secondContactPersonName: "Tom",
autumn=secondContactPersonPhone: "40040000"
christmas=firstContactPersonName: "Doe",
christmas=firstContactPersonPhone: "99999999",
christmas=secondContactPersonName: "Foo",
christmas=secondContactPersonPhone: "44552200"
}
日期输出应该是这样的数组:
const dateArray = ["autumn=2020-09-29", "christmas=2020-12-29"]
我希望它是动态的,因为有时我可能有一个easter
之类的对象。我之所以要这样做,是因为我使用该对象来填充输入字段中的内容,并使用dateArray
来启用选择的日期。我知道这不是最好的解决方案,但我必须努力做到这一点。我是JavaScript的新手,在理解它时遇到了一些问题。如果有人能帮我,我将不胜感激,好吗?我希望这个问题和例子是好的。谢谢你的帮助。
let obj = {
"success": true,
"payload": [
{
"weekNumber": 40,
"sortOrder": 1,
"label": "autumn",
"numberOfPossibleDays": 3,
"editable": true,
"selectedDate": "2020-09-29",
"deliveryDays": [
{
"date": "2020-09-28",
"contactPerson": null,
"phoneNumber": null,
"contactPerson2": null,
"phoneNumber2": null,
"selected": false
},
{
"date": "2020-09-29",
"contactPerson": "John",
"phoneNumber": "99887744",
"contactPerson2": "Tom",
"phoneNumber2": "40040000",
"selected": true
},
{
"date": "2020-09-30",
"contactPerson": null,
"phoneNumber": null,
"contactPerson2": null,
"phoneNumber2": null,
"selected": false
}
]
},
{
"weekNumber": 53,
"sortOrder": 2,
"label": "christmas",
"numberOfPossibleDays": 2,
"editable": true,
"selectedDate": "2020-12-29",
"deliveryDays": [
{
"date": "2020-12-28",
"contactPerson": null,
"phoneNumber": null,
"contactPerson2": null,
"phoneNumber2": null,
"selected": false
},
{
"date": "2020-12-29",
"contactPerson": "Doe",
"phoneNumber": "99999999",
"contactPerson2": "Foo",
"phoneNumber2": "44552200",
"selected": true
}
]
}
]
}
let results={};
let datesArray=[];
obj.payload.map((x)=>{
datesArray.push(x.label+"="+x.selectedDate);
x["deliveryDays"].map((y)=>{
if(y.contactPerson){
let personKey = x.label + "=firstContactPersonName";
results[personKey] = y.contactPerson;
let contactKey = x.label+"=firstContactPersonPhone";
results[contactKey] = y.phoneNumber;
}
if(y.contactPerson2){
let secondPersonKey = x.label + "=secondContactPersonName";
results[secondPersonKey] = y.contactPerson2;
let secondContactKey = x.label+"=secondContactPersonPhone";
results[secondContactKey] = y.phoneNumber2;
}
});
});
console.log(datesArray)
console.log(results)
我们遍历有效载荷,并使用日期数组来存储日期和结果数组,以获得季节中的第一个和第二个联系人姓名。希望这能有所帮助!