下载js代码地址  js代码地址 代码如下图所示

  展示结果如图,对比两个文件夹的目录文件和大小,文件夹下的子文件夹会显示出退格的效果,以便区分父子文件目录;

由于文件目录较多,js文件目录信息相似,所以使用了递归的方法

展示出来的文件夹和子文件要显示出退格的效果,所以循环的时候记录自己的层级index

let version1 = data["4.0.0.6006"][0];
let version2 = data["4.0.0.1846"][0]; let data_v1 = version1.dirs;
let data_v2 = version2.dirs; all_file = get_file(data_v1, data_v2, 0); function get_file(data_v1, data_v2, index) {
index++; let arr = [];
data_v1 = data_v1 || [];
data_v2 = data_v2 || []; let len_ = max_len(data_v1, data_v2); for (var i = 0; i < len_; i++) { var item1 = data_v1[i] || {};
var item2 = data_v2[i] || {}; if (is_folder(item1) && is_folder(item2)) { var obj = {};
obj.index = index;
obj.type = 'folder';
obj.v1 = 'v1';
obj.v2 = 'v2';
obj.v1_name = item1['dir_name'];
obj.v2_name = item2['dir_name'];
obj.v1_file_cnt = item1['file_cnt'];
obj.v2_file_cnt = item2['file_cnt'];
obj.v1_size = item1['size'];
obj.v2_size = item2['size'];
arr.push(obj); if (has_dirs(item1) || has_dirs(item2)) {
arr = arr.concat(get_file(item1.dirs, item2.dirs, index));
} arr = arr.concat(_file(item1.files, item2.files, index)); } else if (is_folder(item1) || is_folder(item2)) { if (is_folder(item1)) { var obj = {};
obj.index = index;
obj.type = 'folder';
obj.v1 = 'v1';
obj.v2 = 'v2';
obj.v1_name = item1['dir_name'];
obj.v2_name = '';
obj.v1_file_cnt = item1['file_cnt'];
obj.v2_file_cnt = '';
obj.v1_size = item1['size'];
obj.v2_size = '';
arr.push(obj); } else { var obj = {};
obj.index = index;
obj.type = 'folder';
obj.v1 = 'v1';
obj.v2 = 'v2';
obj.v1_name = '';
obj.v2_name = item2['dir_name'];
obj.v1_file_cnt = '';
obj.v2_file_cnt = item2['file_cnt'];
obj.v1_size = '';
obj.v2_size = item2['size'];
arr.push(obj);
} if (has_dirs(item1) || has_dirs(item2)) { arr = arr.concat(get_file(item1.dirs, item2.dirs, index));
}
arr = arr.concat(_file(item1.files, item2.files, index));
} else if (!is_folder(item1) || !is_folder(item2)) {
arr = arr.concat(_file(item1.files, item2.files, index)); }
}
return arr; } function _file(data1, data2, index) {
index++;
data1 = data1 || [];
data2 = data2 || [];
let len = max_len(data1, data2); var file_arr = [];
for (var i = 0; i < len; i++) {
var file1 = data1[i] || {};
var file2 = data2[i] || {};
var obj = {};
obj.index = index;
obj.type = 'file';
obj.v1 = 'v1';
obj.v2 = 'v2';
obj.v1_name = file1['file_name'] || '';
obj.v2_name = file2['file_name'] || '';
obj.v1_size = file1['size'] || '';
obj.v2_size = file2['size'] || '';
file_arr.push(obj) }
return file_arr;
} function max_len(data1, data2) {
let len1 = data1.length;
let len2 = data2.length; return len1 > len2 ? len1 : len2;
} function is_folder(file) {
return file.hasOwnProperty('dir_name');
} function has_dirs(data) {
return data.hasOwnProperty('dirs')
}

vue代码

        <table class="table_border">
<thead> <tr>
<th></th>
<th colspan="2">v1</th>
<th colspan="2">v2</th>
<th colspan="2">v1-v2</th>
</tr>
<tr>
<th>文件夹/文件</th>
<th>文件数量</th>
<th>文件size</th>
<th>文件数量</th>
<th>文件size</th>
<th>文件数量</th>
<th>文件size</th>
</tr>
</thead>
<tbody>
<tr v-for="(item,index) in all_file">
<template v-if="item.type=='folder'"> <td :style="{'paddingLeft': parseInt(20*item._index) + 'px' }"><i class="icon_folder icon iconfont icon-folder"></i>{{ item.v1_name|| item.v2_name}}</td>
<td>{{item.v1_file_cnt}}</td>
<td>{{item.v1_size}}</td>
<td>{{item.v2_file_cnt}}</td>
<td>{{item.v2_size}}</td>
<td>{{getdiff(item.v1_file_cnt , item.v2_file_cnt)}}</td>
<td :d="item.v1_size + '-' + item.v2_size">{{getdiff(item.v1_size , item.v2_size)}}</td>
</template>
<template v-if="item.type=='file'"> <td :style="{'paddingLeft': parseInt(20*item._index) + 'px' }"><i class="icon iconfont icon-file"></i>{{ item.v1_name|| item.v2_name}}</td>
<td>{{item.v1_file_cnt}}</td>
<td>{{item.v1_size}}</td>
<td></td>
<td>{{item.v2_size}}</td>
<td></td>
<td :d="item.v1_size + '-' + item.v2_size">{{getdiff(item.v1_size , item.v2_size)}}</td>
</template>
</tr>
</tbody>
</table>

根据获取的json文件,展示文件目录结构的更多相关文章

  1. Golang Json文件解析为结构体工具-json2go

    代码地址如下:http://www.demodashi.com/demo/14946.html 概述 json2go是一个基于Golang开发的轻量json文件解析.转换命令行工具,目前支持转换输出到 ...

  2. arcgis api 3.x for js 地图加载多个 SHP 图层压缩以及 json 文件展示(附源码下载)

    前言 关于本篇功能实现用到的 api 涉及类看不懂的,请参照 esri 官网的 arcgis api 3.x for js:esri 官网 api,里面详细的介绍 arcgis api 3.x 各个类 ...

  3. Asp.NetCore3.1 WebApi 获取配置json文件中的数据

    下面只是做一个简单的测试: 1:定义好appsetting.Json文件的配置信息如下: { "Logging": { "LogLevel": { " ...

  4. 谷歌通过ajax获取本地JSON文件,为什么会显示跨域?转载的

    在本地写了一段JSON代码,然后用ajax读取后,在浏览器打开,发现谷歌提示涉及到跨域问题, 但是跨域是由于协议,域名,端口中有一个不同,才会跨域,我在本地访问自己的文件,怎么和跨域扯上关系了?? 谷 ...

  5. php 如何获取一个json文件

    function showupversion(){ #获取平台类型 $type='android'; #读取文件的路径 $url="D:/WWW/gm_lequ/gm_lequ"; ...

  6. 谷歌通过ajax获取本地JSON文件,为什么会提示跨域?

    在本地写了一段JSON代码,然后用ajax读取后,在浏览器打开,发现谷歌提示涉及到跨域问题, 但是跨域是由于协议,域名,端口中有一个不同,才会跨域,我在本地访问自己的文件,怎么和跨域扯上关系了?? 下 ...

  7. NetCore 获取appsetting.json 文件中的配置

    1. using Microsoft.Extensions.Configuration public class HomeController : Controller { public IConfi ...

  8. golang中如何将json文件解析成结构体

    package tool import ( "bufio" "encoding/json" "fmt" "os" ) t ...

  9. 通过Jquery中Ajax获取json文件数据

    1. JSON(JavaScript Object Notation): javaScript对象表示法: 是存储和交换文本信息的语法,比xml更小,更快,更易解析. 2. JSON基本书写格式 : ...

随机推荐

  1. sql注入1

    一.函数 1.version() MYsql版本 2.user()    数据库用户名 3.database()   数据库名 4.@@datadir  数据库路径 5.@@version_compi ...

  2. sql server 字符串根据指定分隔符进行分组

    SET QUOTED_IDENTIFIER ON SET ANSI_NULLS ON GO --功能:分拆字符串 --参数:@String:要分拆的字符串:@Delimiter:分割符号 --返回值: ...

  3. SharePoint 2013 新特性 (三) 破改式 —— 设计管理器的使用 [2.HTML变身模板页]

    假设你跟我一样,看到了一个非常漂亮的页面,想把这种风格放到SharePoint里,咋办呢,那肯定得自定义个模板页了,好点是SharePoint Designer搞定,差点就得用Visual Studi ...

  4. C#入门基本概念

    一.版本号的命名规则 大部分时候是在名字后面加些数字表示不同的版本.其中以加上年份号最为简单明了.比如 Visual Studio 2008.但是大部分人还是不用这个方式.因为年份号中没有带来跟多的信 ...

  5. MSP430G2553 TimerA中断说明

    一.TimerA中断向量. G2553一共有2个TimerA,分别是TimerA0和TimerA1,中断入口地址分别是: TimerA0中断向量名称     <--> 中断源 ------ ...

  6. DataBase——Mysql的DataHelper

    源帖 https://www.cnblogs.com/youuuu/archive/2011/06/16/2082730.html 保护原帖,尊重技术,致敬工匠! using System; usin ...

  7. java开发150个建议

    阅读目录 建议1:不要在常量和变量中出现易混淆的字母 建议2:莫让常量蜕变成变量 建议3:三元操作符的类型务必一致 建议4:避免带有变长参数的方法重载 建议5:别让null值和空值威胁到变长方法 建议 ...

  8. 常见Soc平台图形内存管理学习笔记

    硬件编解码.硬件图像scale等过程,是在专有的硬件单元里进行,其使用的内存也是专有的内存,这种内存多是SoC中图形内存.如此方便与硬件加速图形渲染.图像显示.硬件图像加速处理等功能相交互. 上述过程 ...

  9. tomcat启动时报:IOException while loading persisted sessions: java.io.EOFException的解决方案 ZT

    错误代码如下: 严重: IOException while loading persisted sessions: java.io.EOFException java.io.EOFException ...

  10. 执行shell脚本出错'\r': command not found

    在linux中执行脚本时出错 $'\r': command not found 错误原因是在脚本中有空行,如果脚本是在Windows下进行编辑之后上传到linux上去执行的话,就会出现这个问题. 因为 ...