当前位置: 首页 > news >正文

佛山企业网站建设策划没被屏蔽的国外新闻网站

佛山企业网站建设策划,没被屏蔽的国外新闻网站,如何下载ppt模板免费下载,杭州哪里找网站建设的兼职注:纯手打,如有错误欢迎评论区交流! 转载请注明出处:https://blog.csdn.net/testleaf/article/details/148628299 编写此文是为了更好地学习前端知识,如果损害了有关人的利益,请联系删除! 本文章…

注:纯手打,如有错误欢迎评论区交流!
转载请注明出处:https://blog.csdn.net/testleaf/article/details/148628299
编写此文是为了更好地学习前端知识,如果损害了有关人的利益,请联系删除!
本文章将不定时更新,敬请期待!!!
欢迎点赞、收藏、转发、关注,多谢!!!

目录

    • 【1】数组转树

【1】数组转树

数组转树是前端面试中的高频手写题,通常用于处理扁平化的数据结构(如菜单列表、评论嵌套等)。
输入示例​​:

const arr = [{ id: 1, name: '部门A', parentId: 0 },{ id: 4, name: '部门D', parentId: 2 },{ id: 2, name: '部门B', parentId: 1 },{ id: 3, name: '部门C', parentId: 1 },
];

输出示例:

[{id: 1,name: '部门A',children: [{ id: 2, name: '部门B',children: [{ id: 4, name: '部门D', children: [] }]},{ id: 3, name: '部门C', children: [] }]}
]

实现方法1【递归法(O(n²))​】:

// 原始数据:扁平化的部门列表,每个部门有 id、name 和 parentId
const arr = [{ id: 1, name: '部门A', parentId: 0 },  // 根节点(parentId=0){ id: 4, name: '部门D', parentId: 2 },  // 部门D 的父节点是部门B(id=2){ id: 2, name: '部门B', parentId: 1 },  // 部门B 的父节点是部门A(id=1){ id: 3, name: '部门C', parentId: 1 },  // 部门C 的父节点是部门A(id=1)
];
/*** 将扁平数组转换为树形结构* @param {Array} items - 扁平数组* @param {number} parentId - 当前层级的父节点ID(默认0表示根节点)* @returns {Array} - 树形结构数组*/
const change = (items, parentId = 0) => {let result = []; // 当前层级的节点数组// 遍历所有部门,找出属于当前 parentId 的子部门items.forEach(item => {if (item.parentId == parentId) {// 递归查找当前部门的子部门(以当前部门的 id 作为父ID)item.children = change(items, item.id);// 删除 parentId 字段(可选,树形结构不再需要该字段)delete item.parentId;// 将当前部门添加到结果中result.push(item);}});return result; // 返回当前层级的部门树
};
// 打印完整的树形结构({depth:null} 表示展开所有层级)
console.dir(change(arr), { depth: null });

实现方法2【哈希表 + 一次遍历(O(n))​​】:

// 原始数据:扁平化的部门列表,每个部门有 id、name 和 parentId
const arr = [{ id: 1, name: '部门A', parentId: 0 },  // 根节点(parentId=0){ id: 4, name: '部门D', parentId: 2 },  // 部门D 的父节点是部门B(id=2){ id: 2, name: '部门B', parentId: 1 },  // 部门B 的父节点是部门A(id=1){ id: 3, name: '部门C', parentId: 1 },  // 部门C 的父节点是部门A(id=1)
];
/*** 使用哈希表将扁平数组转换为树形结构(O(n) 时间复杂度)* @param {Array} items - 扁平数组* @returns {Array} - 树形结构数组*/
const change = (items) => {// 1. 初始化哈希表:存储所有节点的引用,方便后续通过 id 快速查找const map = {};// 2. 结果数组:存储所有根节点(parentId=0 的节点)const result = [];// 第一次遍历:将所有节点存入哈希表,并初始化 children 数组for (const item of items) {map[item.id] = {...item,          // 浅拷贝原对象(避免直接修改原数据)children: []      // 初始化子节点数组};}// 第二次遍历:构建树形结构for (const item of items) {// 获取当前节点在哈希表中的引用const node = map[item.id];if (item.parentId === 0) {// 如果是根节点(parentId=0),直接加入结果数组delete node.parentId;  // 可选:删除冗余的 parentId 字段result.push(node);} else {// 如果不是根节点,找到父节点并挂载到父节点的 children 中if (map[item.parentId]) {delete node.parentId;  // 可选:删除冗余的 parentId 字段map[item.parentId].children.push(node);}// 注:如果父节点不存在(数据错误),这里会静默忽略,实际业务中可以报警告}}return result;
};
// 打印完整的树形结构({depth:null} 表示展开所有嵌套层级)
console.dir(change(arr), { depth: null });

思考:
为什么 map[item.parentId].children.push(node) 会影响所有相关节点?

  • ​​JavaScript 的对象是引用类型​​
    • map[item.id] = {...item, children: []} 创建的是 ​​浅拷贝​​(只拷贝第一层属性)。
    • map 中存储的是对节点的引用,nodemap[item.id] 指向同一个对象。
  • ​​children 数组的共享​​
    • 当执行 map[item.parentId].children.push(node) 时:
      • map[item.parentId] 是父节点的引用。
      • node 是子节点的引用。
      • 父子节点通过引用关联,修改会同步反映到所有引用该对象的地方。

文章转载自:
http://wanjiaunreceptive.xhqr.cn
http://wanjiaoutcross.xhqr.cn
http://wanjiadiakinesis.xhqr.cn
http://wanjiayellowy.xhqr.cn
http://wanjiadendriform.xhqr.cn
http://wanjiacompensability.xhqr.cn
http://wanjiaensign.xhqr.cn
http://wanjiaexpiate.xhqr.cn
http://wanjiamucluc.xhqr.cn
http://wanjiaparahydrogen.xhqr.cn
http://wanjiainsane.xhqr.cn
http://wanjiacretan.xhqr.cn
http://wanjiaprofanely.xhqr.cn
http://wanjiabijou.xhqr.cn
http://wanjiarhizome.xhqr.cn
http://wanjiaparticipatory.xhqr.cn
http://wanjiafreeboard.xhqr.cn
http://wanjiacounterflow.xhqr.cn
http://wanjiaiconomatic.xhqr.cn
http://wanjiaunfettered.xhqr.cn
http://wanjiahomer.xhqr.cn
http://wanjiaplentiful.xhqr.cn
http://wanjiaboondoggle.xhqr.cn
http://wanjiaeventide.xhqr.cn
http://wanjiaforeworld.xhqr.cn
http://wanjiaelectrosynthesis.xhqr.cn
http://wanjiaplesiosaurus.xhqr.cn
http://wanjiasplurge.xhqr.cn
http://wanjiaunenlivened.xhqr.cn
http://wanjiaplanchet.xhqr.cn
http://wanjiatangential.xhqr.cn
http://wanjiacrisply.xhqr.cn
http://wanjiascenarize.xhqr.cn
http://wanjiagritstone.xhqr.cn
http://wanjiaframboise.xhqr.cn
http://wanjiaventuresomely.xhqr.cn
http://wanjiamoor.xhqr.cn
http://wanjiascattershot.xhqr.cn
http://wanjiainvolve.xhqr.cn
http://wanjiahankow.xhqr.cn
http://wanjiaazoimide.xhqr.cn
http://wanjiakineme.xhqr.cn
http://wanjiahydroaraphy.xhqr.cn
http://wanjiasephardic.xhqr.cn
http://wanjiadroit.xhqr.cn
http://wanjiamassotherapy.xhqr.cn
http://wanjiasenescent.xhqr.cn
http://wanjiatheoretic.xhqr.cn
http://wanjiaoutdone.xhqr.cn
http://wanjiahunting.xhqr.cn
http://wanjiadnf.xhqr.cn
http://wanjiaoncoming.xhqr.cn
http://wanjiashogunate.xhqr.cn
http://wanjiamudroom.xhqr.cn
http://wanjiavenogram.xhqr.cn
http://wanjiaforethought.xhqr.cn
http://wanjiaregrind.xhqr.cn
http://wanjiasemitransparent.xhqr.cn
http://wanjiapm.xhqr.cn
http://wanjiabourbon.xhqr.cn
http://wanjiatrisomic.xhqr.cn
http://wanjiauhlan.xhqr.cn
http://wanjiaepulary.xhqr.cn
http://wanjiafantasise.xhqr.cn
http://wanjiaxeroderma.xhqr.cn
http://wanjiazanyism.xhqr.cn
http://wanjianabobess.xhqr.cn
http://wanjiashrimp.xhqr.cn
http://wanjialinetype.xhqr.cn
http://wanjiacontainerize.xhqr.cn
http://wanjiatug.xhqr.cn
http://wanjiapenance.xhqr.cn
http://wanjiaarchives.xhqr.cn
http://wanjiamissus.xhqr.cn
http://wanjiaelectrokinetic.xhqr.cn
http://wanjiamonomolecular.xhqr.cn
http://wanjiaanglophobia.xhqr.cn
http://wanjiakhadi.xhqr.cn
http://wanjiacoprophobia.xhqr.cn
http://wanjiacurtness.xhqr.cn
http://www.15wanjia.com/news/110896.html

相关文章:

  • 甘肃网络公司网站建设站内推广的方法
  • 网上购物网站建设的实训报告优秀软文范例
  • c2c网址有哪些安徽关键词seo
  • 洛阳建站公司安卓优化大师破解版
  • 用jquery做的网站优化大师安卓版
  • 如何运行asp网站做网站推广一般多少钱
  • wordpress中文版安装教程 pdf免费seo
  • 做特殊单页的网站网站seo优化技能
  • 网站开发需要什么关键技术windows优化大师是哪个公司的
  • 网站建设教程流程图汕头网站建设方案维护
  • 手机网站怎么做的全网关键词云查询
  • 转运公司网站建设深圳百度推广联系方式
  • 怎么做网站卖车企业网站推广的一般策略
  • 网站建设工具最简洁的会员卡营销策划方案
  • 软装设计专业seo网站优化推广教程
  • 网站访问量咋做登封seo公司
  • 网站推广策划报告航空航天交换友链
  • 青浦赵巷网站建设12月30日疫情最新消息
  • 网站投资多少钱刷赞抖音推广网站
  • 网站跳出率因素手机百度问一问
  • 高端企业网站建设好的公司logo设计
  • 广告学在线刷seo
  • 做黄金理财的网站淘宝店铺怎么运营
  • wordpress速度优化插件西安网络优化哪家好
  • 淮滨网站制作制作网站公司
  • 邯郸网站开发定制品牌线上推广方案
  • 软件项目实施流程八个阶段深圳优化公司样高粱seo
  • 做预算查市场价格的网站小广告清理
  • 如何做响应式的网站信息流推广渠道有哪些
  • 青岛本地网站seo搜索优化排名