【发布时间】:2023-03-19 09:15:01
【问题描述】:
我得到了来自 API 的响应,但我想对其进行格式化以进行迭代以达到正确的值。
在下面的对象中,我得到列 makeLineName 并基于此列,我想创建一个类型数组并将整个对象推送到类型数组上。
假设 ex - 在下面的响应中,我们有 2 个对象用于 "makeLineName":"Red",所以我想创建一个类型数组并推送所有对象在匹配 makeLineName = Red 的类型数组中。就是这样。
const data = [{
"makeLineName":"Red",
"country":"Germany",
"processTypeId":"3",
"processTechType":"Batch & crunch"
},
{
"makeLineName":"Red",
"country":"Germany",
"processTypeId":"3",
"processTechType":"Batch"
},
{
"makeLineName":"Blue",
"country":"India",
"processTypeId":"3",
"processTechType":"Continues"
}
];
预期输出
const data = [{
"makeLineName":"Red",
"processTypeId":"3",
"country":"Germany",
"processTechType":"Batch & crunch"
types :[{
"makeLineName":"Red",
"processTypeId":"3",
"country":"Germany",
"processTechType":"Batch & crunch"
},
{
"makeLineName":"Red",
"processTypeId":"3",
"country":"Germany",
"processTechType":"Batch"
}]
},
{
"makeLineName":"Blue",
"country":"India",
"processTypeId":"3",
"processTechType":"Continues"
types :[{
"makeLineName":"Blue",
"country":"India",
"processTypeId":"3",
"processTechType":"Continues"
}
}];
我做了下面的代码,它工作正常,但它为类型创建了许多嵌套数组,因此我在使用循环迭代以获得类型数组的完美值时遇到问题。
getMakeLineMasterData() {
const data = {
data1: 'India'
};
this.testfile.getWork(data).pipe(map(data => this.processData(data))).subscribe((resp: any) => {
if (resp) {
console.log(this.dataSource, "resp");
}
});
}
processData(data: any) {
let mappedData = [];
for (const item of data) {
const mitem = mappedData.find(obj => obj.makeLineName == item.makeLineName);
if (mitem) {
mitem['types'].push(item);
} else {
let newItem = item;
newItem['types'] = [item];
mappedData.push(newItem);
}
}
return mappedData;
}
现在我的代码正在工作并返回数据,但它也在为内部和内部的类型创建许多嵌套数组。 谁能帮我按照我的预期输出使其正确。
【问题讨论】:
标签: javascript arrays json angular typescript