首页 技术 正文
技术 2022年11月10日
0 收藏 901 点赞 4,311 浏览 3928 个字
const fs = require('fs');// --------------- 读取源文件 ---------------const originData = require('./vuxArea3.json');// --------------- 常量 ---------------const constant = {  ARRAY_TYPE: 'Array',  JSON_TYPE: 'Json',};// --------------- 转换的配置 ---------------const config = {  originKey: {    children: null,    parent: 'parent',    value: 'value',    label: 'name'  },  originType: constant.ARRAY_TYPE,  targetKey: {    children: 'children',    parent: null,    value: 'value',    label: 'label'  },  targetType: constant.JSON_TYPE};// --------------- 转换函数 ---------------function convertArrayToJson(initData, { originKey, targetKey }) {  if (!initData || initData.length === 0) return [];  if (!initData.length === 1) return initData;  if (!(initData instanceof Array)) return [initData];  const result = [];  const tempMap = [];  const key = originKey.value;  const parentKey = originKey.parent;  const l = initData.length;  let i;  // key转换  const data = initData.map(item => ({    [originKey.parent]: item[originKey.parent],    [targetKey.value]: item[originKey.value],    [targetKey.label]: item[originKey.label]  }));  // 临时引用  for (i = 0; i < l; i += 1) {    tempMap[data[i][key]] = data[i];  }  // 叶子通过临时引用挂载,利用所有的节点都是单例,才可以通过临时引用去挂载叶子  // 根元素直接push到根节点  for (i = 0; i < l; i += 1) {    const parentValue = data[i][parentKey];    // 当前元素存在父元素,并且子不等于父    if (tempMap[parentValue] && data[i][key] !== parentValue) {      // 父元素上在children上加上当前元素      tempMap[parentValue][targetKey.children] =        tempMap[parentValue][targetKey.children] || [];      tempMap[parentValue][targetKey.children].push(data[i]);    } else {      // 当前元素是根元素      result.push(data[i]);    }  }  return result;}function convert(data, { originKey, originType, targetKey, targetType }) {  if (originType === constant.ARRAY_TYPE && targetType === constant.JSON_TYPE) {    return convertArrayToJson(data, { originKey, targetKey });  }  return [];}// --------------- 执行 ---------------const result = convert(originData, config);let resultStr = '';try {  resultStr = JSON.stringify(result);} catch (e) {  console.log(e);}resultStr = resultStr.replace(/"parent":"[a-zA-Z\d]+",/g, '');// --------------- 写入 ---------------fs.writeFile('./result.json', resultStr, 'utf-8', (err) => {  if (err) {    console.log(err);  } else {    console.log(`### conver ${config.originType} to ${config.targetType} success! `);  }});

const fs = require(‘fs’);// ————— 读取源文件 —————const originData = require(‘./vuxArea3.json’);// ————— 常量 —————const constant = { ARRAY_TYPE: ‘Array’, JSON_TYPE: ‘Json’,};// ————— 转换的配置 —————const config = { originKey: { children: null, parent: ‘parent’, value: ‘value’, label: ‘name’ }, originType: constant.ARRAY_TYPE, targetKey: { children: ‘children’, parent: null, value: ‘value’, label: ‘label’ }, targetType: constant.JSON_TYPE};// ————— 转换函数 —————function convertArrayToJson(initData, { originKey, targetKey }) { ) return []; ) return initData; if (!(initData instanceof Array)) return [initData]; const result = []; const tempMap = []; const key = originKey.value; const parentKey = originKey.parent; const l = initData.length; let i; // key转换 const data = initData.map(item => ({ [originKey.parent]: item[originKey.parent], [targetKey.value]: item[originKey.value], [targetKey.label]: item[originKey.label] })); // 临时引用 ; i ) { tempMap[data[i][key]] = data[i]; } // 叶子通过临时引用挂载,利用所有的节点都是单例,才可以通过临时引用去挂载叶子 // 根元素直接push到根节点 ; i ) { const parentValue = data[i][parentKey]; // 当前元素存在父元素,并且子不等于父 if (tempMap[parentValue] && data[i][key] !== parentValue) { // 父元素上在children上加上当前元素 tempMap[parentValue][targetKey.children] = tempMap[parentValue][targetKey.children] || []; tempMap[parentValue][targetKey.children].push(data[i]); } else { // 当前元素是根元素 result.push(data[i]); } } return result;}function convert(data, { originKey, originType, targetKey, targetType }) { if (originType === constant.ARRAY_TYPE && targetType === constant.JSON_TYPE) { return convertArrayToJson(data, { originKey, targetKey }); } return [];}// ————— 执行 —————const result = convert(originData, config);let resultStr = ”;try { resultStr = JSON.stringify(result);} catch (e) { console.log(e);}resultStr = resultStr.replace(/”parent”:”[a-zA-Z\d]+”,/g, ”);// ————— 写入 —————fs.writeFile(‘./result.json’, resultStr, ‘utf-8’, (err) => { if (err) { console.log(err); } else { console.log(`### conver ${config.originType} to ${config.targetType} success! `); }});

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,492
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,907
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,740
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,494
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:8,132
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:5,295