| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 | // 获取所有的叶子节点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;}
 |