逻辑代码
// 4.糅合数据 合并to属性 造出桑基图的数据
const newchangetodata = [];
const arrDimensions = [];
const changeto = (newarr) => {
arrDimensions.push(sortArr(newarr, 'level'));
sortArr(newarr, 'level').forEach((itemn) => {
// eslint-disable-next-line prefer-const
let newArr = [];
// eslint-disable-next-line no-const-assign
// for (let i = 0; i < itemn.length; i++) {
for (let i = 0; i < itemn.length; i++) {
// eslint-disable-next-line vars-on-top
// eslint-disable-next-line @typescript-eslint/no-loop-func
// eslint-disable-next-line array-callback-return
const index = newArr.findIndex((item) => {
if (item.label && itemn[i].label) {
return item.label === itemn[i].label;
}
});
if (index !== -1) {
newArr[index].to.push({
target: itemn[i].to[0].target,
value: itemn[i].to[0].value,
type: itemn[i].to[0].type,
level: itemn[i].to[0].level,
flow_in_ratio: itemn[i].to[0].flow_in_ratio,
flow_out_ratio: itemn[i].to[0].flow_out_ratio,
});
// newArr[index].value.push(itemn[i].value);
} else {
newArr.push({
label: itemn[i] && itemn[i].label,
id: itemn[i].id,
level: itemn[i].level,
type: itemn[i].type,
to: itemn[i].to,
crowdId: itemn[i].crowdId,
height: itemn[i].to[0].value < 200 ? itemn[i].to[0].value : 200,
color: colorArr[randomnum(0, colorArr.length)],
flow_in_ratio: itemn[i].flow_in_ratio,
flow_out_ratio: itemn[i].flow_out_ratio,
});
}
}
newArr.forEach((item) => {
newarrs.push(item);
});
});
// console.log(newarrs, 'newarrs')
newarrs.forEach((item) => {
let nums = 0;
if (item.to) {
item.to.forEach((ite) => {
nums += Number(ite.value);
});
item.totalmumber = nums;
}
});
//
const maxarr = [];
newarrs.forEach((item) => {
if (item.totalmumber) {
maxarr.push(item.totalmumber);
}
});
newarrs.forEach((item) => {
let maxnum = 0;
maxnum = Math.max(...maxarr);
item.maxnums = maxnum;
});
//
newchangetodata.push(newarrs);
newarrs = [];
};
console.log(newchangedata, 'newchangedata') 原数据
newchangedata.forEach((item) => {
changeto(item);
});
const idarr = [];
newchangetodata.forEach((ite) => {
ite.forEach((item) => {
idarr.push(item.id);
});
});
console.log(newchangetodata, 'newchangetodata') 转换的数据