function processData(data) {const paramTracker = {};data.forEach(item => {item.isRepeat = false;item.children.forEach(child => {const key = `${child.params_name}::${child.params_mark}`;if (!paramTracker[key]) {paramTracker[key] = { count: 0, items: [] };}paramTracker[key].count++;paramTracker[key].items.push(child);});});data.forEach(item => {item.children.forEach(child => {const key = `${child.params_name}::${child.params_mark}`;if (paramTracker[key].count > 1) {child.isRepeat = true;item.isRepeat = true;}child.parent = item; });});return data;
}
const data = [{fun_name: '设备事件',fun_id: '8922121',children: [{ params_name: 'kk上报状态', params_mark: 'sbk_status' },{ params_name: 'kk低温度', params_mark: 'kklow_temp' }]},{fun_name: '告警事件',fun_id: '8978711',children: [{ params_name: '上报状态', params_mark: 'up_status' },{ params_name: '低温度', params_mark: 'low_temp' }]},{fun_name: '事件上报',fun_id: '42354343',children: [{ params_name: '状态', params_mark: 'status' },{ params_name: '低电量', params_mark: 'low_power' },{ params_name: '电量', params_mark: 'power' },{ params_name: '设备状态', params_mark: 'dev_status' }]},{fun_name: '事件下发',fun_id: '4656561',children: [{ params_name: '状态', params_mark: 'status' },{ params_name: '低温度', params_mark: 'low_temp' },{ params_name: '电量', params_mark: 'power' },{ params_name: '设备状态', params_mark: 'dev_status' }]}
];
const result = processData(data);
console.log(JSON.stringify(result, null, 2));