下载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. win10操作系统 安装nodejs报2503错误解决方法

    报该错误的原因是由于安装操作没有获得足够的管理权限导致. 在电脑左下角开始菜单[右键]选择"命令提示符(管理员)“ 敲入如下命令 msiexec /package 后面加你nodejs的本机 ...

  2. 牛客网PAT乙级(Basic Level)真题-组个最小数 (20)

    组个最小数 (20) 时间限制 1000 ms 内存限制 32768 KB 代码长度限制 100 KB 判断程序 Standard (来自 小小) 题目描述 给定数字0-9各若干个.你可以以任意顺序排 ...

  3. 使用C语言开发PHP扩展(转)

    本篇文章给大家带来的内容是介绍如何使用C语言给PHP写扩展,,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 1.在php源码路径的ext文件夹下,新建一个extend_test.de ...

  4. 数组中array==null和array.length==0的区别

    //代码public class Test1 { public static void main(String[] args) { int[] a1 = new int[0]; int[] a2 = ...

  5. Alienware R8外星人台式机安装双系统(WIN10+Ubuntu)的总结

    新电脑终于到了,然而外星人的系统比较特殊,很多东西和别的品牌(包括DELL)不一样, 同时NVIDIA显卡也带来了很多问题.重装了十几遍,查阅了上百篇文章后之后终于搞定了双系统. 其实核心问题很傻,就 ...

  6. jmeter 获取登录token

    1.在登录的请求下新建正则表达式,获取token 2.正则表达式的写法 注意:apply to 默认是选择第二个,但是有获取不到token的情况就选第一个 "accessToken" ...

  7. 简易实践的vue自定义tab入门

    本文基于vue官方文档,分别为:动态组件 & 异步组件.插槽.进入/离开 & 列表过渡 章节链接描述 要想实现tab动画,首先要了解vue中哪些元素/那些组件适合在那些条件下实现动画效 ...

  8. Python之字符串函数str()

    str()方法使Python将非字符串值表示为字符串: age = 23 message = "Happy" + str(age) +"rd Birthday"

  9. 使用django发布带图片的网页(上)

    如何使用django发布带静态图片的网页呢? 在settings.py里加入下面内容 STATIC_ROOT = os.path.join(os.path.dirname(__file__),'sta ...

  10. c语言希尔排序,并输出结果(不含插入排序)

    #include<stdio.h> void shellsort(int* data,int len) { int d=len; int i; ) { d=(d+)/; //增量序列表达方 ...