const copyArr = function (arr) {
const res = [];
for (let i = 0; i < arr.length; i++) {
if (arr[i].children) {
res[i] = { name: arr[i].name };
for (let j = 0; j < arr[i].children.length; j++) {
res[i].children[j] = [{
name: arr[i].children[j].name,
}];
}
copyArr(arr[i].children);
} else {
res[i] = { name: arr[i].name };
}
}
return res;
};
报错:Cannot set property '0' of undefined
数组结构是这样的:
op: [
{
name: '时间',
},
{
name: '性别',
},
{
name: '科室',
},
{
name: '年龄',
},
{
name: '转归',
},
{
name: '专病',
children: [{
name: '并且',
// label: {
// backgroundColor: 'rgb(38,253,203)',
// borderColor: 'rgb(97,161,138)',
// padding: [8, 2, 8, 2],
// borderRadius: 14,
// },
children: [
{ name: 'T1', value: 2105 },
{ name: 'N1', value: 1316 },
{ name: 'MO', value: 3151 },
],
}],
},
{
name: '主诊断',
},
{
name: '手术',
},
{
name: '抗癌药物',
},
{
name: '检验指标',
children: [{
name: '并且',
// label: {
// backgroundColor: 'rgb(38,253,203)',
// borderColor: 'rgb(97,161,138)',
// padding: [8, 2, 8, 2],
// borderRadius: 14,
// },
children: [{
name: '检验指标',
children: [{
name: '红细胞计数',
children: [
{ name: '1-5' },
],
}, {
name: '血球压积',
children: [
{ name: '1-5' },
],
}, {
name: '葡萄糖',
children: [
{
name: '阴性',
// label: {
// backgroundColor: 'rgb(29,204,34)',
// },
},
],
}, {
name: '乙肝抗原',
children: [
{
name: '阴性',
// label: {
// backgroundColor: 'rgb(29,204,34)',
// },
},
],
},
],
}],
}],
},
{
name: '自定义条件',
children: [{
name: '并且',
// label: {
// backgroundColor: 'rgb(38,253,203)',
// borderColor: 'rgb(97,161,138)',
// padding: [8, 2, 8, 2],
// borderRadius: 14,
// },
children: [{
name: '出院小结',
children: [{
name: '并含',
// label: {
// backgroundColor: 'rgb(38,253,203)',
// borderColor: 'rgb(97,161,138)',
// padding: [8, 2, 8, 2],
// borderRadius: 14,
// },
children: [
{ name: '乳腺恶心肿瘤' },
{ name: '好转' },
],
}],
}, {
name: '入院诊断',
children: [{
name: '或含',
// label: {
// backgroundColor: 'rgb(38,253,203)',
// borderColor: 'rgb(97,161,138)',
// padding: [8, 2, 8, 2],
// borderRadius: 14,
// },
children: [
{ name: '心率失常' },
{ name: '脑梗塞' },
],
}],
},
],
}, {
name: '或者',
// label: {
// backgroundColor: 'rgb(38,253,203)',
// borderColor: 'rgb(97,161,138)',
// padding: [8, 2, 8, 2],
// borderRadius: 14,
// },
children: [{
name: '病程记录',
children: [{
name: '不含',
// label: {
// backgroundColor: 'rgb(38,253,203)',
// borderColor: 'rgb(97,161,138)',
// padding: [8, 2, 8, 2],
// borderRadius: 14,
// },
children: [
{ name: '心率失常' },
{ name: '脑梗塞' },
],
}],
}, {
name: '出院小结',
children: [
{ name: '痊愈' },
],
},
],
}, {
name: '不含',
// label: {
// backgroundColor: 'rgb(38,253,203)',
// borderColor: 'rgb(97,161,138)',
// padding: [8, 2, 8, 2],
// borderRadius: 14,
// },
children: [
{ name: '手术记录' },
{ name: '靶向治疗' },
],
},
],
},
],
你可以对一个对象用
res[i].children
来指定他的属性的值,但是不能用res[i].children[j]
来指定一个不存在的数组的索引.补充:如果需要正确递归处理的话,直接将children取为递归返回的数组即可