首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

js将列表组装成树结构的两种方式

工作中偶尔就会遇到后端同学丢来一个列表,要我们自己组装成一个树结构渲染到页面上,本文以两种不同方式探索生成树的算法思想。...背景介绍 可组装成树结构的数组一般有以下几个要素: id 当前节点id parentId 当前节点的父节点id children 子节点列表(可能不会在接口中返回,需要组装时候自己加上) 原始结构:...目标结构: 关键就是一维数组中通过parentId找到其对应的父节点并添加到父节点的children数组中。...实现方案 最直接的方式就是遍历数组,并把找到的子节点逐一添加到父节点中 function listToTreeSimple(data) { const res = []; data.forEach...看起来竟然递归性能最佳 但是数据量稍微大一点…… (上面递归,下面非递归) 资源 原始数据列表 const list = [ { id: 1001, parentId: 0,

23710
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    【基础干货】Linux Shell基础教程

    您可以使用这些快捷方式指定相对路径,无论是在ls之类的命令中,还是在我们尚未讨论的其他命令中。要将当前位置移动到另一个目录,我们使用cd命令。...虽然这通常是首选的行为,但有时候目录列表太长,或者默认情况下没有正确排序。shell允许我们将输出从一个命令定向到另一个命令,直到输出对我们有用为止。...如果在命令末尾添加双&&),shell将一直等到前一个命令成功完成后才执行下一个命令。您可以使用此功能将一系列依赖于前面命令的成功的命令串在一起。...除了C-n和C-p访问历史记录中的下一个和上一个命令之外,以下键绑定使得更容易在bash-terminal中导航文本(C表示ctrl,M-表示alt): C-a将光标移动到行的开头 C-e将光标移动到行尾...C-f 将光标向前移动一个字符 C-b 将光标移回一个字符 M-f 将光标向前移动一个单词 M-b 将光标移回一个单词 更多信息 怎么样,学会了吗?

    1.4K40

    python: 将列表中的字符串 连接成一个 长路径

    今天实习公司分配了一个数据处理的任务。...在将列表中的字符串连接成一个长路径时,我遇到了如下问题: import os path_list = ['first_directory', 'second_directory', 'file.txt...这我就纳闷了: ['first_directory', 'second_directory', 'file.txt']   细思后想明白了,os.path.join 的输入必须是一个或多个 str ,而不能是...字符串列表的本质依然是list。指令把 字符串列表 理解成了一个 str ,就相当于对 单str 进行 os.path.join ,最后当然没变化啦。   ...os.path.join(path_list) head = '' for path in path_list: head = os.path.join(head, path) print head   终于将列表中的字符串连接成了一个完整的长路径

    2.9K20

    Win系统下文件夹映射的实现(将文件夹从一个盘映射到另一个盘)

    Target:指定新链接引用的路径(相对或绝对) 如将G盘的123文件夹映射到L盘并重命名为test mklink 硬链接/H和符号链接/D的区别 硬链接只能用于文件,不能用于文件夹,而且硬链接和目标文件必须在同一个分区或者卷中...但是硬链接具有以下一些不同的地方。 (1)硬链接必须引用同一个分区或者卷中的文件,而符号链接可以指向不同分区或者共享文件夹上的文件或者文件夹。...(7)硬链接看上去和真的文件一模一样(实际上就是真实的文件),不像符号链接那样有一个快捷方式的小箭头,但是硬链接并不会增加磁盘空间的占用。...如分别用 mklink /D dird tdir 和 mklink /J dirj tdir 创建 dird、dirj 对相对目录的 tdir 的符号链接和目录联接,之后将 dird、dirj 移动到其它目录下.../J dirj c:\demo\tdir 创建 c:\demo\tdir 的符号链接和目录联接,再将这两个目录链接移动到其它目录下,则 dird 和 dirj 均可正常指向 c:\demo\tdir;

    1.2K10

    VIM 常用快捷键

    而且写文件、查找翻页什么的 比我用鼠标快多了,那熟练的快捷键看的我一愣一愣的 ---- 光标移动: h或退格: 左移一个字符; l或空格: 右移一个字符; j: 下移一行; k: 上移一行; gj: 移动到一段内的下一行...w: 前移一个单词,光标停在下一个单词开头; W: 移动下一个单词开头,但忽略一些标点; e: 前移一个单词,光标停在下一个单词末尾; E: 移动到下一个单词末尾,如果词尾有标点,则移动到标点; b:...后移一个单词,光标停在上一个单词开头; B: 移动到上一个单词开头,忽略一些标点; (: 前移1句。...n%: 到文件n%的位置。 zz: 将当前行移动到屏幕中央。 zt: 将当前行移动到屏幕顶端。 zb: 将当前行移动到屏幕底端。...在当前位置插入另一个文件的内容。

    27.3K23

    Atom飞行手册翻译: 2.2 在Atom中移动

    首先,Atom自带许多Emacs的快捷键来浏览文档。要想上移或者下移一个字符,你可以按ctrl-P和ctrl-N。左移或右移一个字符,按ctrl-B和ctrl-F。...这样等同于按下方向键,但是一些人不喜欢把他们的手移到方向键的位置。 除了单个字符的移动,还有一些其他的用于移动的快捷键。 alt-B, alt-left 移动到单词开头。...alt-F, alt-right 移动到单词末尾。 cmd-right, ctrl-E 移动到整行末尾 cmd-left, ctrl-A 移动到整行开头 cmd-up 移动到文件开头。...cmd-down 移动到文件末尾。 你也可以使用ctrl-G,通过指定一行(和列)来直接移动光标。这会弹出一个对话框问你想要跳到哪一行。...如果你按下shift-F2则会跳到上一个。 通过按下ctrl-F2,你可以看到当前项目中的所有书签的列表,并可以快速筛选它们,跳到任何一个书签的位置。

    1K20

    MacBook Pro最全快捷键指南——高效型选手必备

    Fn–左箭头 Home:滚动到文稿开头 Fn–右箭头 End:滚动到文稿末尾。 Command–上箭头 将插入点移至文稿开头。 Command–下箭头 将插入点移至文稿末尾。...Option–右箭头 将插入点移至下一字词的词尾。 Shift–Command–上箭头 选中插入点与文稿开头之间的文本。 Shift–Command–下箭头 选中插入点与文稿末尾之间的文本。...Option–Shift–右箭头 将文本选择范围扩展到当前字词的词尾,再按一次则扩展到后一字词的词尾。 Control-A 移至行或段落的开头。 Control-E 移至行或段落的末尾。...按住 Command 键拖移 将拖移的项目移到其他宗卷或位置。拖移项目时指针会随之变化。 按住 Option 键拖移 拷贝拖移的项目。拖移项目时指针会随之变化。...按住 Option-Command 键拖移 为拖移的项目制作替身。拖移项目时指针会随之变化。 按住 Option 键点按开合三角 打开所选文件夹内的所有文件夹。这个快捷键仅在列表视图中有效。

    6.7K40

    Mac 键盘快捷键

    连按 Command 键:在单独的标签页或窗口中打开文件夹。 按住 Command 键拖移到另一个宗卷:将拖移的项目移到另一个宗卷,而不是拷贝它。 按住 Option 键拖移:拷贝托移的项目。...拖移时按住 Option-Command:为拖移的项目制作替身。拖移项目时指针会随之变化。 按住 Option 键点按开合三角:打开所选文件夹内的所有文件夹。这个快捷键仅在列表视图中有效。...Fn–左箭头:Home:滚动到文稿开头。 Fn–右箭头:End:滚动到文稿末尾。 Command–上箭头:将插入点移至文稿开头。 Command–下箭头:将插入点移至文稿末尾。...Option–右箭头:将插入点移至下一字词的词尾。 Shift-Command–上箭头:选中插入点与文稿开头之间的文本。 Shift-Command–下箭头:选中插入点与文稿末尾之间的文本。...Option–Shift–左箭头:将文本选择范围扩展到当前字词的词尾,再按一次则扩展到后一字词的词尾。 Control–A:移至行或段落的开头。 Control–E:移至行或段落的末尾。

    2.8K20

    mac全选文字的快捷键_MACBOOK最全快捷键指南

    Fn-左箭头Home:滚动到文稿开头 Fn-右箭头End:滚动到文稿末尾 Command-上箭头将插入点移至文稿开头。...Shift- Command-上箭头选中插入点与文稿开头之间的文本 Shift- Command-下箭头选中插入点与文稿末尾之间的文本 sht- Command-左箭头选中插入点与当前行行首之间的文本。...Contro|-A移至行或段落的开头。 Control-E移至行或段落的末尾, Control-F向前移动一个字符。 Control-B向后移动一个字符。...按住 Command键拖移将拖移的项目移到其他宗卷或位置。拖移项目时指针会随之变化。 按住 Option键拖移拷贝拖移的项目。拖移项目时指针会随之变化。...按住 Option- Command键拖移为拖移的项目制作替身。拖移项目时指针会随之变化。 按住 Option键点按开合三角打开所选文件夹内的所有文 件夹。这个快捷键仅在列表视图中有效。

    2.3K10

    Mac快捷键

    要了解更多快捷键,请查看您所用 app 的菜单。每个 app 都有其自己的快捷键,并且一个 app 中使用的快捷键可能不适用于另一个 app。...Fn–左箭头开头:滚动到文稿开头。Fn–右箭头结尾:滚动到文稿末尾。Command–上箭头将插入点移至文稿开头。Command–下箭头将插入点移至文稿末尾。...Control-A移至行或段落的开头。Control-E移至行或段落的末尾。Control-F向前移动一个字符。Control-B向后移动一个字符。Control-L将光标或所选内容置于可见区域中央。...Command-Option-V移动:将剪贴板中的文件从其原始位置移动到当前位置。...拖移时按 Command-Option为拖移的项目制作替身。拖移项目时指针会随之变化。Option-点按伸缩三角形打开所选文件夹内的所有文件夹。此快捷键仅在列表视图中有效。

    1.7K20

    Linux学习笔记之vim操作指令大全

    h或退格: 左移一个字符; l或空格: 右移一个字符; j: 下移一行; k: 上移一行; gj: 移动到一段内的下一行; gk: 移动到一段内的上一行; +或Enter: 把光标移至下一行第一个非空白字符...w: 前移一个单词,光标停在下一个单词开头; W: 移动下一个单词开头,但忽略一些标点; e: 前移一个单词,光标停在下一个单词末尾; E: 移动到下一个单词末尾,如果词尾有标点,则移动到标点; b:...后移一个单词,光标停在上一个单词开头; B: 移动到上一个单词开头,忽略一些标点; ge: 后移一个单词,光标停在上一个单词末尾; gE: 同 ge ,不过‘单词’包含单词相邻的标点。...n%: 到文件n%的位置。 zz: 将当前行移动到屏幕中央。 zt: 将当前行移动到屏幕顶端。 zb: 将当前行移动到屏幕底端。 4.3 标记 使用标记可以快速移动。...C-u: 从当前位置移动到命令行开头。 C-b: 移动到命令行开头。 C-e: 移动到命令行末尾。 Shift-Left: 左移一个单词。 Shift-Right: 右移一个单词。

    2.8K21

    Mac下键盘使用

    Fn–左箭头 开头:滚动到文稿开头。 Fn–右箭头 结尾:滚动到文稿末尾。 Command–上箭头 将插入点移至文稿开头。 Command–下箭头 将插入点移至文稿末尾。...Option–右箭头 将插入点移至下一字词的词尾。 Shift–Command–上箭头 选中插入点与文稿开头之间的文本。 Shift–Command–下箭头 选中插入点与文稿末尾之间的文本。...Option–Shift–右箭头 将文本选择范围扩展到当前字词的词尾,再按一次则扩展到后一字词的词尾。 Control-A 移至行或段落的开头。 Control-E 移至行或段落的末尾。...Control-F 向前移动一个字符。 Control-B 向后移动一个字符。 Control-L 将光标或所选内容置于可见区域中央。 Control-P 上移一行。...拖移时按住 Option-Command 为拖移的项目制作替身。拖移项目时指针会随之变化。 Option-点按开合三角形 打开所选文件夹内的所有文件夹。这个快捷键仅在列表视图中有效。

    2.8K130

    Android 完全符合规则但很头疼的Json映射成一个树结构且可折叠的列表?

    先上效果图 [在这里插入图片描述] --- 前言 前些天有个朋友问我,要实现一个树状的列表要怎么做,根据一个完全符合规则但是却很头疼的一个Json解析来实现,见下格式,对于有些Android开发者来说,...既然要逐级嵌套,先来一个LinearLayout,当然这个列表是可滑动的,外层嵌套一个ScrollView即可,Activity布局那就是这样的: 的item,一种是不带子布局的item,当遇到有嵌套的情况,即存在next字段,就可以使用带子布局的item,反之则是另一个!...存在子节点使用带有子布局的item,反之使用另一个!...,如果遇到需要加载更多的情况下,可以直接判断ScrollView是否滚动到底部,并且上次的网络加载是否完成,达成条件则再次调用27行代码进行插入即可!

    69950

    Vim命令使用说明

    基本移动 h或退格: 左移一个字符; l或空格: 右移一个字符; j: 下移一行; k: 上移一行; gj: 移动到一段内的下一行; gk: 移动到一段内的上一行; +或Enter: 把光标移至下一行第一个非空白字符...w: 前移一个单词,光标停在下一个单词开头; W: 移动下一个单词开头,但忽略一些标点; e: 前移一个单词,光标停在下一个单词末尾; E: 移动到下一个单词末尾,如果词尾有标点,则移动到标点; b:...后移一个单词,光标停在上一个单词开头; B: 移动到上一个单词开头,忽略一些标点; ge: 后移一个单词,光标停在上一个单词末尾; gE: 同 ge ,不过‘单词’包含单词相邻的标点。...n%: 到文件n%的位置。 zz: 将当前行移动到屏幕中央。 zt: 将当前行移动到屏幕顶端。 zb: 将当前行移动到屏幕底端 标记 使用标记可以快速移动。...:[n]r filename在第n行插入另一个文件的内容。 :r !date 在光标处插入当前日期与时间。同理,:r !

    2.6K11

    个人使用mac OS和win OS的差异

    连按 Command 键:在单独的标签页或窗口中打开文件夹。 按住 Command 键拖移到另一个宗卷:将拖移的项目移到另一个宗卷,而不是拷贝它。 按住 Option 键拖移:拷贝托移的项目。...拖移时按住 Option-Command:为拖移的项目制作替身。拖移项目时指针会发生变化。 按住 Option 键点按开合三角:打开所选文件夹内的所有文件夹。这个快捷键仅在列表视图中有效。...Fn-左箭头:Home:滚动到文稿开头。 Fn-右箭头:End:滚动到文稿末尾。 Command-上箭头:将插入点移至文稿开头。 Command-下箭头:将插入点移至文稿末尾。...Option-右箭头:将插入点移至下一字词的词尾。 Shift-Command-上箭头:选中插入点与文稿开头之间的文本。 Shift-Command-下箭头:选中插入点与文稿末尾之间的文本。...Option-Shift-右箭头:将文本选择范围扩展到当前字词的词尾,再按一次则扩展到下一字词的词尾。 Control-A:移至行或段落的开头。 Control-E:移至行或段落的末尾。

    2.6K20

    【总结】vim命令使用总结,该来的还是躲不掉啊晕

    命令大全,最详细(建议收藏) 光标的移动 h - 左移光标 j - 下移光标 k - 上移光标 l - 右移光标 gj - 下移光标(折行文本) gk - 上移光标(折行文本) H - 移动到当前页面顶部...M - 移动到当前页面中间 L - 移动到当前页面底部 w - 移动到下个单词开头 W - 移动到下个单词开头(单词含标点) e - 移动到下个单词结尾 E - 移动到下个单词结尾(单词含标点) b...- 移动到上个单词开头 B - 移动到上个单词开头(单词含标点) ge - 移动到上个单词结尾 gE - 移动到上个单词结尾(单词含标点) % - 跳转到配对的符号(默认支持的配对符号组:: '()',...,$d - 删除当前行到文件末尾 :.,1d - 删除当前行到文件开头 :10,$d - 从第 10 行到文件末尾 :g/{pattern}/d - 删除所有包含模式的行 :g!...:vim[grep] /foo/ **/* :cn[ext] - 移动至下一个 :cp[revious] - 移动至上一个 :cope[n] - 打开搜索结果列表 :ccl[ose] - 关闭 quickfix

    55821

    VIM的使用

    j: 向下移动 k: 向上移动 xh: 向左移动x个字符距离 单词移动: w: 将光标移动到下一个单词的开头 b: 将光标移动到前一个单词的开头 e: 将光标移动到下一个单词的词末 E: 移动到单词的结尾...(忽略标点符号) ge: 将光标移动到上一个单词的词末 2w: 指定移动的次数 行移动: $: 将光标移动到当前行的行尾 0:将光标移动到当前行的行首 ^:将光标移动到当前行的第一个非空字符 2|:移到当前行的第...在屏幕中移动 xG: 跳转到指定的第x行,G移动到文件按末尾, ``(2次单引号)返回到跳转前的位置 gg: 移动到文件开头 x%: 移动到文件中间,就使用50% H: 移动到home M: 移动到屏幕中间...将光标移动到屏幕的顶部 zb:将光标移动到屏幕的底部 设置跳转标记 mx,my,mz设置三个位置,以m开头,后可接任意字母 `x, `y, `z 可以跳转到各自设置的位置 文本操作 文本插入操作 i:...放弃缓冲区的修改,恢复到文件打开时的状态 :edit file 编辑另一个文件 :wnext 保存当前缓冲区的修改并跳转到缓冲区列表中的下一个文件 :set autowrite:自动保存 标签页与折叠栏

    1.3K10
    领券