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

残疾人无障碍网站怎么做佛山网站制作外包

残疾人无障碍网站怎么做,佛山网站制作外包,网站建设英语怎么说,国外域名需要实名吗经常有同学问树结构的相关操作#xff0c;也写了很多次#xff0c;在这里总结一下 JS 树形结构一些操作的实现思路#xff0c;并给出了简洁易懂的代码实现。本文内容结构大概如下#xff1a;JS树结构相关操作1遍历树结构1. 树结构介绍JS中树结构一般是类似于这样的结构也写了很多次在这里总结一下 JS 树形结构一些操作的实现思路并给出了简洁易懂的代码实现。本文内容结构大概如下JS树结构相关操作1遍历树结构1. 树结构介绍JS中树结构一般是类似于这样的结构let tree  [{id: 1,title: 节点1,children: [{id: 1-1,title: 节点1-1},{id: 1-2,title: 节点1-2}]},{id: 2,title: 节点2,children: [{id: 2-1,title: 节点2-1}]} ] 为了更通用可以用存储了树根节点的列表表示一个树形结构每个节点的children属性如果有是一颗子树如果没有children属性或者children长度为0则表示该节点为叶子节点。2. 树结构遍历方法介绍树结构的常用场景之一就是遍历而遍历又分为广度优先遍历、深度优先遍历。其中深度优先遍历是可递归的而广度优先遍历是非递归的通常用循环来实现。深度优先遍历又分为先序遍历、后序遍历二叉树还有中序遍历实现方法可以是递归也可以是循环。JS遍历树结构广度优先和深度优先的概念很简单区别如下深度优先访问完一颗子树再去访问后面的子树而访问子树的时候先访问根再访问根的子树称为先序遍历先访问子树再访问根称为后序遍历。广度优先即访问树结构的第n1层前必须先访问完第n层3. 广度优先遍历的实现广度优先的思路是维护一个队列队列的初始值为树结构根节点组成的列表重复执行以下步骤直到队列为空取出队列中的第一个元素进行访问相关操作然后将其后代元素如果有全部追加到队列最后。下面是代码实现类似于数组的forEach遍历我们将数组的访问操作交给调用者自定义即一个回调函数// 广度优先 function treeForeach (tree, func) {let node, list  [...tree]while (node  list.shift()) {func(node)node.children  list.push(...node.children)} } 很简单吧~,~用上述数据测试一下看看treeForeach(tree, node  { console.log(node.title) }) 输出可以看到第一层所有元素都在第二层元素前输出 节点1节点2节点1-1节点1-2节点2-1 4. 深度优先遍历的递归实现先序遍历三五行代码太简单不过多描述了function treeForeach (tree, func) {tree.forEach(data  {func(data)data.children  treeForeach(data.children, func) // 遍历子树}) } 后序遍历与先序遍历思想一致代码也及其相似只不过调换一下节点遍历和子树遍历的顺序function treeForeach (tree, func) {tree.forEach(data  {data.children  treeForeach(data.children, func) // 遍历子树func(data)}) } 测试treeForeach(tree, node  { console.log(node.title) }) 输出// 先序遍历节点1节点1-1节点1-2节点2节点2-1// 后序遍历节点1-1节点1-2节点1节点2-1节点2 5. 深度优先循环实现先序遍历与广度优先循环实现类似要维护一个队列不同的是子节点不追加到队列最后而是加到队列最前面function treeForeach (tree, func) {let node, list  [...tree]while (node  list.shift()) {func(node)node.children  list.unshift(...node.children)} } 后序遍历就略微复杂一点我们需要不断将子树扩展到根节点前面去艰难地执行列表遍历遍历到某个节点如果它没有子节点或者它的子节点已经扩展到它前面了则执行访问操作否则扩展子节点到当前节点前面function treeForeach (tree, func) {let node, list  [...tree], i   0while (node  list[i]) {let childCount  node.children ? node.children.length : 0if (!childCount || node.children[childCount - 1]  list[i - 1]) {func(node)i} else {list.splice(i, 0, ...node.children)}} } 2列表和树结构相互转换1. 列表转为树列表结构通常是在节点信息中给定了父级元素的id然后通过这个依赖关系将列表转换为树形结构列表结构是类似于let list  [{id: 1,title: 节点1,parentId: ,},{id: 1-1,title: 节点1-1,parentId: 1},{id: 1-2,title: 节点1-2,parentId: 1},{id: 2,title: 节点2,parentId: },{id: 2-1,title: 节点2-1,parentId: 2} ] 列表结构转为树结构就是把所有非根节点放到对应父节点的chilren数组中然后把根节点提取出来function listToTree (list) {let info  list.reduce((map, node)  (map[node.id]  node, node.children  [], map), {})return list.filter(node  {info[node.parentId]  info[node.parentId].children.push(node)return !node.parentId}) } 这里首先通过info建立了idnode的映射因为对象取值的时间复杂度是O(1)这样在接下来的找寻父元素就不需要再去遍历一次list了因为遍历寻找父元素时间复杂度是O(n)并且是在循环中遍历则总体时间复杂度会变成O(n^2)而上述实现的总体复杂度是O(n)。2. 树结构转列表结构有了遍历树结构的经验树结构转为列表结构就很简单了。不过有时候我们希望转出来的列表按照目录展示一样的顺序放到一个列表里的并且包含层级信息。使用先序遍历将树结构转为列表结构是合适的直接上代码://递归实现 function treeToList (tree, result  [], level  0) {tree.forEach(node  {result.push(node)node.level  level  1node.children  treeToList(node.children, result, level  1)})return result }// 循环实现 function treeToList (tree) {let node, result  tree.map(node  (node.level  1, node))for (let i  0; i  result.length; i) {if (!result[i].children) continuelet list  result[i].children.map(node  (node.level  result[i].level  1, node))result.splice(i1, 0, ...list)}return result } 3树结构筛选树结构过滤即保留某些符合条件的节点剪裁掉其它节点。一个节点是否保留在过滤后的树结构中取决于它以及后代节点中是否有符合条件的节点。可以传入一个函数描述符合条件的节点:function treeFilter (tree, func) {// 使用map复制一下节点避免修改到原树return tree.map(node  ({ ...node })).filter(node  {node.children  node.children  treeFilter(node.children, func)return func(node) || (node.children  node.children.length)}) } 4树结构查找1. 查找节点查找节点其实就是一个遍历的过程遍历到满足条件的节点则返回遍历完成未找到则返回null。类似数组的find方法传入一个函数用于判断节点是否符合条件代码如下function treeFind (tree, func) {for (const data of tree) {if (func(data)) return dataif (data.children) {const res  treeFind(data.children, func)if (res) return res}}return null } 2. 查找节点路径略微复杂一点因为不知道符合条件的节点在哪个子树要用到回溯法的思想。查找路径要使用先序遍历维护一个队列存储路径上每个节点的id假设节点就在当前分支如果当前分支查不到则回溯。function treeFindPath (tree, func, path  []) {if (!tree) return []for (const data of tree) {path.push(data.id)if (func(data)) return pathif (data.children) {const findChildren  treeFindPath(data.children, func, path)if (findChildren.length) return findChildren}path.pop()}return [] } 用上面的树结构测试let result  treeFindPath(tree, node  node.id  2-1) console.log(result) 输出[2,2-1] 3. 查找多条节点路径思路与查找节点路径相似不过代码却更加简单function treeFindPath (tree, func, path  [], result  []) {for (const data of tree) {path.push(data.id)func(data)  result.push([...path])data.children  treeFindPath(data.children, func, path, result)path.pop()}return result }5结语对于树结构的操作其实递归是最基础也是最容易理解的。递归本身就是循环的思想所以可以用循环来改写递归。熟练掌握了树结构的查找、遍历应对日常需求应该是绰绰有余啦。收外国男骗中国妹子的炮天朝竟有这样一帮「女权组织」 2018-03-19 INSIGHT视界 From 酷玩实验室 微信号coollabs 其实我读书的时候 也曾经想过做一个女权主义者 但是后来发生了一些事情 让我选择了放弃 简单来说是这么一个事情我发现 女权对于一些中国人来说是信仰 但是对另一些中国人来说是生意 所谓的“伪女权”“女权癌” 大概就是这么回事 尽管早就有这样的思想准备 但让我没想到的是 这两天知乎上曝光了一件大事 还是让我三观震碎 我没想到这些“伪女权” 竟然已经形成了黑色产业链 让人细思恐极—— 国内竟然有一群人 打着“女权主义”的名号 从事着组织卖淫的事情 在中国女生不知情的情况下 把她们卖给外国男人事情是这样的根据知乎用户伊利丹·怒风的爆料 他在知乎和一个伪女权主义者 吵了起来 一开始他可能以为这只是一个 脑子比较轴的伪女权主义者 所以两人就吵了一通 本来他以为就是撕个逼而已 没想到的是 这个伪女权主义者 可不是什么好惹的主 这个自称为“玛丽女王”的人 竟然在半个月中 持续不断地骚扰他 而最夸张的是 玛丽女王声称 自己有能力 让伊利丹的QQ号 在5天之内被封掉 到这里为止 伊利丹一直以为 他不过是碰到了一个杠精 但是万万没想到 5天之后 他的QQ号竟然真的被永久封禁了说真的这就有点吓人了 这个不起眼的玛丽女王 竟然还能操控别人的QQ账号被封难不成她真的背后有人伊利丹这才意识到 自己好像惹到了一个组织 他去扒了扒这个玛丽女王的QQ空间 这才发现 自己简直捅出一个马蜂窝这个人平时干的 竟然是把中国女生 卖给外国男人的皮肉生意真的我本来以为 我是一个见过不少套路的人 但没想到 这一套操作 真的是惊为天人 简单来说是这样的 首先玛丽女王自称是“女权主义者” 但是实际上她的言论 宣传的却是 中国男人配不上中国女人 她甚至恶意辱骂中国男人 恨不得中国男人全部死光 连自己的爸爸都不放过 但是这么做对她有什么好处呢很简单 骂完中国男人以后 接下来她就说—— 既然中国男人这么差劲 那就找外国男人吧于是她就经常发布外国男人的介绍 看起来是一个热心的媒婆 还在各种QQ和微信群里 散播此类信息 但是看到这里 我们不难发现有点问题 看看其中这些不堪入目的措辞 这并不是普通的介绍男友啊这简直是在拉皮条啊果然伊利丹发现 玛丽女王真的在 拉皮条的过程中 收外国男人的钱下面是聊天记录实锤而且请注意—— 在这个过程中 她会收外国男人的钱 但是钱不给中国女生 却落到了她自己的腰包 于是一个诡异的情况出现了中国妹子 并不知道收钱这回事 还以为是正常交友 而外国男人 却都交了钱 很可能认为自己是在买春额也就是说 在中国女孩不知情的情况下 她们被“卖”给了外国男人 而好处费 却全都进了玛丽女王的腰包... 我真的是没见过这种操作 这说轻了是骗炮 说重了已经可以算是卖淫了吧我想请熟悉刑法的朋友们看看 这个玛丽女王 至少应该算是个 介绍组织卖淫罪吧而且从伊利丹曝光的资料看来 这个组织规模不小 玛丽女王甚至把外国男生的信息 建了一个完整的表格 有详细的个人资料、照片 可以说 是一条非常完整的产业链 那如果按照这样操作 外国男人都是来嫖的 中国女生却不知道 还以为是要跟他们谈恋爱 那双方难道不会穿帮吗恩在这方面 玛丽女王早有对策 根据知乎一位 从事过这个产业的匿名用户提供的信息 针对这种情况 玛丽女王们 还会手把手地教外国男人 怎么快速摆脱女生的纠缠 怎么调教中国女生 怎么让女生觉得自己很可爱 可以说 各种套路一应俱全 甚至还可以开发票看到这里 她们背后的产业就非常清楚了 这个玛丽女王 她根本就不是什么女权主义者 而是打着女权主义的口号 贩卖中国女生的人贩子 一方面 她们通过辱骂中国男人 吸引对外国男人感兴趣的中国女生 另一方面 她们向外国男人收钱 然后把中国女生卖给他们图片来源知乎渭水徐工 而可怜的中国妹子们 还以为自己是在 追求男女平权 其实不过是沦为了 这些老鸨的赚钱工具 伊利丹把这整个事情 写出来以后 在知乎、微博引起了巨大的关注 关于其中提到的 伊利丹的QQ被永久封禁的问题 腾讯经过核查 目前也有了结果经调查是玛丽女王利用伪造证据 恶意举报了伊利丹的QQ号 目前腾讯已经将伊利丹的QQ解封 同时封禁了玛丽女王等人的 两个QQ账号 警方也就此事立案侦查了 相信很快就会有结果 这个事情算是告一段落了 但是在我看来 却有一件事让我无法释怀为什么“女权主义”竟然会和 辱骂中国男性等同起来为什么“和外国男人交友” 竟然还能演变成 一个免费的陪睡组织我想这个玛丽女王 也许只是一个 发现了恶性赚钱模式的生意人 但是在这背后隐藏的 其实是一个很深的问题为什么有不少中国女人 越来越看不上中国男人 甚至觉得嫁给外国男人 是一种时尚这里面的原因可能非常复杂 我这里先提供一个思路 供大家讨论我发现 现在中国很多大型的女权组织 背后都有着西方势力的影子 她们打着女权的名号 为自己谋取暴利 为西方国家从事破坏活动 而那些真正为女性平权而奔走的人 却得不到应有的帮助 我之所以这样说 并不是信口开河 而是有充足的证据 有一个非常有名的民间女权组织 叫做“女权之声” 它一再声称 自己只是一个自发的民间组织 致力于促进男女平等的 它所有的微博账号、微信账号 全部都是由一个 叫做妇女传媒监测网络的创办的 而这个妇女传媒监测网络 有这么多媒体产品 那它的钱都是哪里来的呢从她们介绍的合作组织里 我们可以清楚地找到 她们的资助者—— 竟然有西方的福特基金会 有人也许会问 收了西方的钱怎么了中国的组织不能收西方的钱吗然而她们不只是收了西方的钱而已 女权之声组织里 有一个人叫做郑楚然 她除了女权运动之外 没有任何其他工作 表面上是一个全职的女权工作者 在2015年的时候 她还因为寻衅滋事 被警察拘留过30多天 甚至在她被拘留的时候 希拉里还借题发挥 指责中国侵犯人权、压制民主 一个中国的小小民间组织的首领 在互联网上的粉丝还没有我多 竟然能得到希拉里这个级别的关注我真的是惊掉了下巴 这样看来 我离希拉里也不是很远了而不止是希拉里 这样一个明明思想上毫无建树的人 却被西方媒体BBC评为了 全球百大思想家 图郑楚然在王宝强事件中发表的言论 除此以外 更让人匪夷所思的 是她们平时就喜欢攻击政府 甚至于她们还会试图分裂我们国家 比如女权之声这个组织里 著名的女权斗士洪理达 就曾经转发著名的港独媒体 Hong Kong Free Press的言论 甚至曾公开发表过 支持藏独、港独、台独的言论 她也经常和郑楚然混在一起 我很想不通 如果她们真的只是单纯的女权主义者 为何要发表分裂国家的言论为何要支持藏独、港独、台独我只能说这大概就叫 拿人家的手短吃人家的嘴软吧 以前我在接触中国的女权组织时 我就觉得很奇怪 她们都喜欢声称 自己是不盈利的非政府组织 但是她们无论是宣传 还是组织各类活动 都需要大量的钱 如果她们真的不盈利 那这些钱都是哪里来的呢而这些外国的金主 他们也更加不可能是什么慈善组织 大发善心来给中国人投钱 每一分投出去的钱 一定都是要有回报的 那么他们的回报是什么呢他们给中国的“女权组织”投钱 能得到什么利益呢联想到中国网络上 如火如荼的对中国男人的讨伐 我只能说细思恐极 我绝不是危言耸听 因为我们就看不远的邻国日本 近些年来日本对于西方的崇拜 可谓深入骨髓 已经到了崇洋媚外的程度 而这其中 当然也包括对白人男性的崇拜 甚至在2016年一个瑞士白人 发了一个视频赤裸裸的说 “在东京只要你是白人 做什么都可以” 视频里面他在日本便利店 随意的亲吻不认识的收银员女孩 在酒吧把不认识的日本女孩 按向自己的裤裆 而日本女孩回应的却是谄媚的笑容 我想并不会有那么多中国人 真正被西方伪女权主义控制 但是我们要警惕的是 别在你自己都没有察觉的时候 被别有用心的人洗了脑 更有甚者 别在你自己都不知道的情况下 被别人卖给了外国男人 还去帮他数钱 本文系授权发布From 酷玩实验室微信号coollabs欢迎分享到朋友圈未经许可不得转载INSIGHT视界 诚意推荐 Forwarded from Official Account 酷玩实验室 酷玩实验室 Learn More Scan QR Code via WeChat to follow Official Account 采集文章采集样式近似文章查看封面IT技术分享社区个人博客网站https://programmerblog.xyz文章推荐程序员效率画流程图常用的工具程序员效率整理常用的在线笔记软件远程办公常用的远程协助软件你都知道吗51单片机程序下载、ISP及串口基础知识硬件断路器、接触器、继电器基础知识
http://www.zqtcl.cn/news/883162/

相关文章:

  • 电子商务网站建设效果那个网站可以做链接
  • 怎样做投资与理财网站网页设计优秀案例分析
  • 网站制作需要学什么搜狗网页版入口
  • html源码网seo搜索优化工程师招聘
  • 做的网站在小窗口中怎么保持中间广东省公共资源交易中心地址
  • 合肥做网站汇站网织梦网站广告代码教程
  • 复兴专业做网站wordpress搬家502
  • 代做毕网站淘宝权重查询
  • 有专做高端折扣女装的网站吗大连最好的做网站的公司
  • 网站需求嘉兴seo关键词优化
  • 自己开发微网站上海成品网站
  • 国外对企业网站开发的研究山西住房与城乡建设厅定额网站
  • 国家工信部网站备案postfix wordpress
  • 兴宁电子商务网站建设网站模板在线制作
  • 汕头整站优化营销推广网
  • 云服务器搭建网站教程加盟教育培训机构
  • 建筑网站设置工资单人换了怎么换太原做网站找谁
  • 网站做推广需要什么条件重庆网站推广哪家服务好
  • 怎样做理财网站wordpress做产品页教程视频
  • 官网模板建站塔山双喜北京网站建设兴田德润官网多少
  • 网站优化推广外包深圳专业网站建设定制
  • 网站开发aichengkeji元凤建盏简介
  • 移动端网站怎么制作asp做的网站如何发布
  • 做的网站用户密码在哪里找凡科申请的网站和qq空间一样吗
  • 如何自己做网站发布到服务器上面wordpress没有幻灯片
  • 闽侯县建设局网站企业建设网站例文
  • 家居类企业响应式网站搭建电商系统
  • 临沂哪里做网站比较好中国建设银行企业信息门户网站
  • 低价建网站提高网站订单转化率
  • 家居网站应该怎么做网站seo推广软件