// 获取所有的叶子节点 export const getLeafNodes = (tree) => { const leafNodes = [] function traverse(node) { if (!node.children || node.children.length === 0) { leafNodes.push(node) } else { for (let child of node.children) { traverse(child) } } } // 开始遍历 if (!tree?.length) return [] for (let rootNode of tree) { traverse(rootNode) } return leafNodes } // 获取所有二级节点 export const getSecondNodes = (tree) => { let nodes = [] for (const rootNode of tree) { if (rootNode.children?.length) nodes = [...nodes, ...rootNode.children] } return nodes } // 找到数组中第一对重复的元素并返回元素及元素在原数组的下标 export const findFirstDuplicateWithIndices = (arr) => { const elementIndices = new Map(); for (let i = 0; i < arr.length; i++) { const element = arr[i]; if (elementIndices.has(element)) { // 如果元素已经在 elementIndices 中,返回元素和它的两个下标 return { element: element, firstIndex: elementIndices.get(element), secondIndex: i }; } else { // 如果元素不在 elementIndices 中,存储它的下标 elementIndices.set(element, i); } } // 如果没有找到重复元素,返回 null 或其他表示未找到的值 return null; }