开启辅助访问      
收藏本站

站内搜索

搜索
热搜: 下载 1.20 1.21

Minecraft(我的世界)苦力怕论坛

[其他] 自己手搓的CSV解释器

发表于 2024-5-25 12:59:15 来自手机 | 显示全部楼层 |阅读模式 IP:河北省
  1. class csv {
  2.     constructor( csvData ){
  3.         this.csvData = csvData
  4.     }
  5.     readAsArrays( backobj=false ){
  6.         let data = ( function( csv ){
  7.             let ret = []
  8.             csv.forEach( function( v ){
  9.                 ret.push( v.split( "," ))
  10.             })
  11.             return ret
  12.         } )( this.csvData.split( "\n" ) )
  13.         if( backobj == false ){
  14.             return data
  15.         } else {
  16.             return {
  17.                 result : data,
  18.                 json : JSON.stringify( data, 0, 4 ),
  19.                 pushTo : function( array ){
  20.                     array.concat( data )
  21.                     return this
  22.                 },
  23.                 then : function( func ){
  24.                     func( this, data )
  25.                     return this
  26.                 },
  27.                 each : function( callback ){
  28.                     for( let line in data ){
  29.                         for( let pos in data[line] ){
  30.                             callback( data[line][pos], [ line, pos ] )
  31.                             //value index
  32.                         }
  33.                     }
  34.                     return this
  35.                 }
  36.             }
  37.         }
  38.     }
  39.     readAsList( backobj=false ){
  40.         let data = ( function( csv ){
  41.             let ret = {}
  42.             for( let key in csv[0] ){
  43.                 ret[ csv[0][ key ] ] = []
  44.                 for( let line in csv ){
  45.                     if( line > 0 ){
  46.                         ret[ csv[0][ key ] ]
  47.                           .push( csv[ line ][ key ] )
  48.                     }
  49.                 }
  50.             }
  51.             return ret
  52.         } )( this.readAsArrays() )
  53.         if( backobj == false ){
  54.             return data
  55.         } else {
  56.             return {
  57.                 result : data,
  58.                 json : JSON.stringify( data, 0, 4 ),
  59.                 pushTo : function( obj ){
  60.                     Object.assign( obj, data )
  61.                     return this
  62.                 },
  63.                 then : function( func ){
  64.                     func( this, data )
  65.                     return this
  66.                 },
  67.                 each : function( callback ){
  68.                     for( let line of Object.keys( data ) ){
  69.                         for( let pos in data[line] ){
  70.                             callback( data[line][pos], [ line, pos ] )
  71.                             //value index
  72.                         }
  73.                     }
  74.                     return this
  75.                 }
  76.             }
  77.         }
  78.     }
  79.     readAsObject( backobj=false ){
  80.         let data = ( function( csv ){
  81.             let ret = {}
  82.             for( let line in csv ){
  83.                 eval( "ret." + csv[line]
  84.                   .slice( 0, -1 )
  85.                   .join( "." ) + "='" + csv[line]
  86.                   .slice( -1 )
  87.                   .join( " " ) + "'" )
  88.             }
  89.             return ret
  90.         } )( this.readAsArrays() )
  91.         if( backobj == false ){
  92.             return data
  93.         } else {
  94.             return {
  95.                 result : data,
  96.                 json : JSON.stringify( data, 0, 4 ),
  97.                 pushTo : function( obj ){
  98.                     Object.assign( obj, data )
  99.                     return this
  100.                 },
  101.                 then : function( func ){
  102.                     func( this, data )
  103.                     return this
  104.                 },
  105.                 each : function( callback ){
  106.                     for( let line of Object.keys( data ) ){
  107.                         callback( data[line], line )
  108.                     }
  109.                     return this
  110.                 }
  111.             }
  112.         }
  113.     }
  114. }
复制代码
  1. //test arraysMode
  2. var hwdt = new csv( "hello,World,5,5" )
  3.   .readAsArrays( true )
  4.   .then( function( fns, dt ){
  5.     console.log( "数据 : " + dt.join( " " ) )
  6.     console.log( "JSON : " + fns.json )
  7.   } )
  8.   .each( function( v, i ){
  9.     console.log( "值: " + v + " 位置: " + i )
  10.   } )
  11.   .result
  12. console.log( hwdt )

  13. //test listMode
  14. var foodList = new csv( `
  15. morning,afternoon,night
  16. rice,water,juice
  17. fish,meat,candy
  18. `.trim() ).readAsList( true )
  19.   .then( function( fns ){
  20.     console.log( "JSON : " + fns.json )
  21.   } )
  22.   .each( function( v, i ){
  23.     console.log( i[0] + " eat " + v )
  24.   } )
  25.   .result
  26. console.log( "早上吃 :  " + foodList.morning.join( " & " ) )
复制代码
苦力怕论坛,感谢有您~
回复

使用道具 举报

发表于 2024-5-25 13:51:20 来自手机 | 显示全部楼层 IP:江西省
非常好帖子,爱来自文主地
2# 2024-5-25 13:51:20 回复 收起回复
苦力怕论坛,感谢有您~
回复 支持

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

本站
关于我们
联系我们
坛史纲要
官方
哔哩哔哩
技术博客
下载
网易版
安卓版
JAVA
反馈
意见建议
教程中心
更多
捐助本站
QQ群
QQ群

QQ群

访问手机版

访问手机版

手机版|小黑屋|系统状态|klpbbs.com

粤公网安备 44200002445329号 | 由 木韩网络 提供云服务 | GMT+8, 2024-6-17 11:55

声明:本站与Mojang以及微软公司没有从属关系

Powered by Discuz! X3.4 粤ICP备2023071842号