合并书签

15 阅读1分钟
function mergeBookmarkArrays(arr1, arr2) {
  const folderMap = new Map();
  
  [...arr1, ...arr2].forEach(folder => {
    if (!folderMap.has(folder.id)) {
      folderMap.set(folder.id, { ...folder, children: [] });
    }
    
    const existingFolder = folderMap.get(folder.id);
    const urlSet = new Set(existingFolder.children.map(child => child.url));
    
    folder.children.forEach(child => {
      if (!urlSet.has(child.url)) {
        existingFolder.children.push({ ...child });
        urlSet.add(child.url);
      }
    });
  });
  
  return Array.from(folderMap.values());
}

const mergedArray = mergeBookmarkArrays(arr1, arr2);