const b = {
fileURL: "",
addFileList: {
"111": "张三",
"222": "张三",
"333": "李四",
"444": "李四",
}
};
const a = {
fileURL: "",
addFileList: [
{
name: "张三",
idList: ["111", "222"],
},
{
name: "李四",
idList: ["333", "444"],
}
]
}
实现b转成a
实现方法第一步,for…in遍历然后第二步合并同类
const a = [];
for (const i in selectRadioName) {
a.push({
name: selectRadioName[i],
idList: i
});
}
第二步
const dataDto = [
{
"id": "163335746",
"name": "施工中标通知书",
"typeName": "施工承发包"
},
{
"id": "163339660674",
"name": "中介服务费50万以下",
"typeName": "中介服务承发包(如涉及)"
},
{
"id": "163385154",
"name": "中介服务费50-100万",
"typeName": "中介服务承发包(如涉及)"
},
{
"id": "163336386",
"name": "中介服务费100万以下",
"typeName": "中介服务承发包(如涉及)"
},
{
"id": "1637906",
"name": "建设项目财务监理业务联系单",
"typeName": "中介服务承发包(如涉及)"
}
];
//解法一
const tempArr = [];
const Data = [];
for (let i = 0; i < dataDto.length; i++) {
if (tempArr.indexOf(dataDto[i].typeName) === -1) {
Data.push({
typeName: dataDto[i].typeName,
dataInfo: [dataDto[i]]
});
tempArr.push(dataDto[i].typeName);
} else {
for (let j = 0; j < Data.length; j++) {
if (Data[j].typeName == dataDto[i].typeName) {
Data[j].dataInfo.push(dataDto[i]);
break;
}
}
}
}
console.log(Data)
//解法二
const newArrr = [];
const typeNameArr: string[] = [] ;// ['','', '']
dataDto.forEach(item => {
if (typeNameArr.indexOf(item.typeName) === -1) {
typeNameArr.push(item.typeName);
}
});
typeNameArr.forEach(item => {
// const filterArr = dataDto.filter(itemInner => itemInner.typeName === item)
const filterArr = dataDto.reduce((prev, cur) => {
if (cur.typeName === item) {
delete cur.typeName;
prev.push(cur);
}
return prev;
}, []);
newArrr.push({
typeName: item,
data: filterArr
});
});
console.log(newArrr)