自动发帖软件

标题: AIWROK软件类型转换方法例子 [打印本页]

作者: 发帖软件    时间: 3 小时前
标题: AIWROK软件类型转换方法例子

AIWROK软件类型转换方法例子

AIWROK软件类型转换方法例子 群发软件发帖工具

AIWROK软件类型转换方法例子 群发软件发帖工具
  1. // 交流QQ群711841924群一,苹果内测群,528816639

  2. // 本文档是AIWROK IDE的主脚本文件,包含类型转换工具和数据处理模块
  3. // 提供了完整的类型检测、类型转换、日期格式化、JSON解析等功能
  4. // 适用于Android和iOS跨平台移动开发环境,基于ES5标准编写
  5. print.log("开始执行日志窗口操作");
  6. print.log("1. 显示日志窗口");
  7. printl( logWindow.show())
  8. print.log("日志窗口显示完成");

  9. print.log("2. 清空日志窗口");
  10. printl(logWindow.clear())
  11. print.log("日志窗口清空完成");

  12. print.log("3. 设置日志窗口高度为2500");
  13. printl(logWindow.setHeight(2500))
  14. print.log("日志窗口高度设置完成");

  15. print.log("4. 设置日志窗口宽度为1000");
  16. printl(logWindow.setWidth(1000))
  17. print.log("日志窗口宽度设置完成");

  18. print.log("5. 设置日志窗口为不可点击模式");
  19. printl(logWindow.setNoClickModel())
  20. print.log("日志窗口不可点击模式设置完成");
  21. print.log("所有日志窗口操作执行完毕");
  22. var TypeConverter = (function() {
  23.     var self = {};
  24.    
  25.     /**
  26.      * 获取值的类型
  27.      * @param {*} value - 要检查的值
  28.      * @returns {string} 值的类型字符串
  29.      */
  30.     self.getType = function(value) {
  31.         return typeof value;
  32.     };
  33.    
  34.     /**
  35.      * 判断是否为字符串类型
  36.      * @param {*} value - 要检查的值
  37.      * @returns {boolean} 是否为字符串
  38.      */
  39.     self.isString = function(value) {
  40.         return typeof value === 'string';
  41.     };
  42.    
  43.     /**
  44.      * 判断是否为有效数字类型(排除NaN)
  45.      * @param {*} value - 要检查的值
  46.      * @returns {boolean} 是否为有效数字
  47.      */
  48.     self.isNumber = function(value) {
  49.         return typeof value === 'number' && !isNaN(value);
  50.     };
  51.    
  52.     /**
  53.      * 判断是否为布尔类型
  54.      * @param {*} value - 要检查的值
  55.      * @returns {boolean} 是否为布尔值
  56.      */
  57.     self.isBoolean = function(value) {
  58.         return typeof value === 'boolean';
  59.     };
  60.    
  61.     /**
  62.      * 判断是否为非空对象
  63.      * @param {*} value - 要检查的值
  64.      * @returns {boolean} 是否为非空对象
  65.      */
  66.     self.isObject = function(value) {
  67.         return typeof value === 'object' && value !== null;
  68.     };
  69.    
  70.     /**
  71.      * 判断是否为数组
  72.      * @param {*} value - 要检查的值
  73.      * @returns {boolean} 是否为数组
  74.      */
  75.     self.isArray = function(value) {
  76.         return Object.prototype.toString.call(value) === '[object Array]';
  77.     };
  78.    
  79.     /**
  80.      * 将值转换为数字,支持默认值
  81.      * @param {*} value - 要转换的值
  82.      * @param {number} [defaultValue=0] - 转换失败时的默认值
  83.      * @returns {number} 转换后的数字或默认值
  84.      */
  85.     self.toNumber = function(value, defaultValue) {
  86.         if (defaultValue === undefined) {
  87.             defaultValue = 0;
  88.         }
  89.         var result = Number(value);
  90.         if (isNaN(result)) {
  91.             return defaultValue;
  92.         }
  93.         return result;
  94.     };
  95.    
  96.     /**
  97.      * 将值转换为字符串,支持默认值
  98.      * @param {*} value - 要转换的值
  99.      * @param {string} [defaultValue=''] - 值为null/undefined时的默认值
  100.      * @returns {string} 转换后的字符串或默认值
  101.      */
  102.     self.toString = function(value, defaultValue) {
  103.         if (value === null || value === undefined) {
  104.             return defaultValue !== undefined ? defaultValue : '';
  105.         }
  106.         return String(value);
  107.     };
  108.    
  109.     /**
  110.      * 将值转换为布尔值
  111.      * @param {*} value - 要转换的值
  112.      * @returns {boolean} 转换后的布尔值
  113.      */
  114.     self.toBoolean = function(value) {
  115.         if (self.isBoolean(value)) {
  116.             return value;
  117.         }
  118.         if (self.isNumber(value)) {
  119.             return value !== 0;
  120.         }
  121.         if (self.isString(value)) {
  122.             return value.toLowerCase() === 'true' || (value.toLowerCase() !== 'false' && value !== '0' && value !== '');
  123.         }
  124.         return Boolean(value);
  125.     };
  126.    
  127.     /**
  128.      * 格式化日期为指定格式
  129.      * @param {Date|string} date - 日期对象或日期字符串
  130.      * @param {string} [format='YYYY-MM-DD HH:mm:ss'] - 日期格式
  131.      * @returns {string} 格式化后的日期字符串,无效日期返回空字符串
  132.      */
  133.     self.formatDate = function(date, format) {
  134.         if (!date) return '';
  135.         var d = date instanceof Date ? date : new Date(date);
  136.         if (isNaN(d.getTime())) return '';
  137.         
  138.         format = format || 'YYYY-MM-DD HH:mm:ss';
  139.         
  140.         var year = d.getFullYear();
  141.         var month = String(d.getMonth() + 1).padStart(2, '0');
  142.         var day = String(d.getDate()).padStart(2, '0');
  143.         var hours = String(d.getHours()).padStart(2, '0');
  144.         var minutes = String(d.getMinutes()).padStart(2, '0');
  145.         var seconds = String(d.getSeconds()).padStart(2, '0');
  146.         
  147.         return format
  148.             .replace('YYYY', year)
  149.             .replace('MM', month)
  150.             .replace('DD', day)
  151.             .replace('HH', hours)
  152.             .replace('mm', minutes)
  153.             .replace('ss', seconds);
  154.     };
  155.    
  156.     /**
  157.      * 安全解析JSON字符串,支持默认值
  158.      * @param {string} jsonStr - JSON字符串
  159.      * @param {*} [defaultValue=null] - 解析失败时的默认值
  160.      * @returns {*} 解析后的对象或默认值
  161.      */
  162.     self.safeParseJSON = function(jsonStr, defaultValue) {
  163.         try {
  164.             return JSON.parse(jsonStr);
  165.         } catch (e) {
  166.             return defaultValue !== undefined ? defaultValue : null;
  167.         }
  168.     };
  169.    
  170.     return self;
  171. })();

  172. var DataProcessor = (function() {
  173.     var self = {};
  174.    
  175.     /**
  176.      * 处理单条用户数据,进行类型转换和验证
  177.      * @param {Object} rawData - 原始用户数据
  178.      * @returns {Object} 处理后的用户对象
  179.      */
  180.     self.processUserData = function(rawData) {
  181.         var result = {
  182.             id: TypeConverter.toNumber(rawData.id, 0),
  183.             name: TypeConverter.toString(rawData.name, 'Unknown'),
  184.             age: TypeConverter.toNumber(rawData.age, 0),
  185.             isActive: TypeConverter.toBoolean(rawData.isActive),
  186.             score: TypeConverter.toNumber(rawData.score, 0),
  187.             tags: TypeConverter.isArray(rawData.tags) ? rawData.tags : [],
  188.             createdAt: TypeConverter.formatDate(rawData.createdAt),
  189.             metadata: TypeConverter.isObject(rawData.metadata) ? rawData.metadata : {}
  190.         };
  191.         
  192.         result.isValid = result.id > 0 && result.name !== 'Unknown';
  193.         result.displayScore = result.score.toFixed(2);
  194.         result.ageGroup = self._calculateAgeGroup(result.age);
  195.         
  196.         return result;
  197.     };
  198.    
  199.     /**
  200.      * 根据年龄计算年龄段
  201.      * @param {number} age - 年龄
  202.      * @returns {string} 年龄段描述
  203.      */
  204.     self._calculateAgeGroup = function(age) {
  205.         if (age < 18) return '未成年';
  206.         if (age < 30) return '青年';
  207.         if (age < 50) return '中年';
  208.         return '老年';
  209.     };
  210.    
  211.     /**
  212.      * 批量处理用户数据数组
  213.      * @param {Array} dataArray - 用户数据数组
  214.      * @returns {Object} 处理结果,包含成功、失败和统计信息
  215.      */
  216.     self.batchProcess = function(dataArray) {
  217.         var results = [];
  218.         var errors = [];
  219.         
  220.         for (var i = 0; i < dataArray.length; i++) {
  221.             try {
  222.                 var processed = self.processUserData(dataArray[i]);
  223.                 results.push(processed);
  224.             } catch (e) {
  225.                 errors.push({
  226.                     index: i,
  227.                     data: dataArray[i],
  228.                     error: e.message
  229.                 });
  230.             }
  231.         }
  232.         
  233.         return {
  234.             success: results,
  235.             failed: errors,
  236.             summary: {
  237.                 total: dataArray.length,
  238.                 successCount: results.length,
  239.                 failedCount: errors.length,
  240.                 successRate: (results.length / dataArray.length * 100).toFixed(2) + '%'
  241.             }
  242.         };
  243.     };
  244.    
  245.     /**
  246.      * 生成数据处理报告
  247.      * @param {Object} processResult - 批量处理结果对象
  248.      * @returns {string} 格式化的报告字符串
  249.      */
  250.     self.generateReport = function(processResult) {
  251.         var report = [];
  252.         report.push('========== 数据处理报告 ==========');
  253.         report.push('总记录数: ' + processResult.summary.total);
  254.         report.push('成功处理: ' + processResult.summary.successCount);
  255.         report.push('处理失败: ' + processResult.summary.failedCount);
  256.         report.push('成功率: ' + processResult.summary.successRate);
  257.         report.push('');
  258.         
  259.         if (processResult.success.length > 0) {
  260.             report.push('--- 成功处理的记录 ---');
  261.             for (var i = 0; i < Math.min(3, processResult.success.length); i++) {
  262.                 var item = processResult.success[i];
  263.                 report.push('ID: ' + item.id + ' | 姓名: ' + item.name +
  264.                            ' | 年龄: ' + item.age + ' (' + item.ageGroup + ')' +
  265.                            ' | 活跃: ' + (item.isActive ? '是' : '否') +
  266.                            ' | 分数: ' + item.displayScore);
  267.             }
  268.             if (processResult.success.length > 3) {
  269.                 report.push('... 还有 ' + (processResult.success.length - 3) + ' 条记录');
  270.             }
  271.             report.push('');
  272.         }
  273.         
  274.         if (processResult.failed.length > 0) {
  275.             report.push('--- 处理失败的记录 ---');
  276.             for (var j = 0; j < processResult.failed.length; j++) {
  277.                 var fail = processResult.failed[j];
  278.                 report.push('索引: ' + fail.index + ' | 错误: ' + fail.error);
  279.             }
  280.         }
  281.         
  282.         report.push('================================');
  283.         return report.join('\n');
  284.     };
  285.    
  286.     return self;
  287. })();

  288. var testData = [
  289.     {
  290.         id: "1001",
  291.         name: "张三",
  292.         age: "25",
  293.         isActive: "true",
  294.         score: "95.5",
  295.         tags: ["JavaScript", "Android"],
  296.         createdAt: new Date("2024-01-15T10:30:00"),
  297.         metadata: { department: "研发部", level: "高级" }
  298.     },
  299.     {
  300.         id: "1002",
  301.         name: "李四",
  302.         age: "35",
  303.         isActive: "false",
  304.         score: "88.3",
  305.         tags: ["iOS", "React Native"],
  306.         createdAt: "2024-02-20T14:45:00",
  307.         metadata: { department: "产品部", level: "中级" }
  308.     },
  309.     {
  310.         id: "1003",
  311.         name: "王五",
  312.         age: "16",
  313.         isActive: "1",
  314.         score: "92.7",
  315.         tags: ["Python", "AI"],
  316.         createdAt: new Date("2024-03-10T09:15:00"),
  317.         metadata: { department: "AI实验室", level: "初级" }
  318.     },
  319.     {
  320.         id: "",
  321.         name: "",
  322.         age: "invalid",
  323.         isActive: "yes",
  324.         score: "abc",
  325.         tags: null,
  326.         createdAt: "invalid-date",
  327.         metadata: null
  328.     },
  329.     {
  330.         id: "1005",
  331.         name: "赵六",
  332.         age: "55",
  333.         isActive: "0",
  334.         score: "76.2",
  335.         tags: ["Java", "Spring"],
  336.         createdAt: new Date("2024-04-05T16:20:00"),
  337.         metadata: { department: "架构部", level: "专家" }
  338.     }
  339. ];

  340. printl('========== 类型转换工具测试 ==========');
  341. printl('类型检测:');
  342. printl('  typeof "Hello" = ' + TypeConverter.getType("Hello"));
  343. printl('  typeof 123 = ' + TypeConverter.getType(123));
  344. printl('  typeof true = ' + TypeConverter.getType(true));
  345. printl('  typeof [1,2,3] = ' + TypeConverter.getType([1,2,3]));
  346. printl('  typeof {a:1} = ' + TypeConverter.getType({a:1}));
  347. printl('');

  348. printl('类型转换:');
  349. print.log('  Number("3.14") = ' + TypeConverter.toNumber("3.14"));
  350. printl('  Number("3.14") = ' + TypeConverter.toNumber("3.14"));
  351. print.log('  Number("abc") = ' + TypeConverter.toNumber("abc", 0));
  352. printl('  Number("abc") = ' + TypeConverter.toNumber("abc", 0));
  353. print.log('  String(123) = ' + TypeConverter.toString(123));
  354. printl('  String(123) = ' + TypeConverter.toString(123));
  355. print.log('  String(true) = ' + TypeConverter.toString(true));
  356. printl('  String(true) = ' + TypeConverter.toString(true));
  357. print.log('  Boolean("true") = ' + TypeConverter.toBoolean("true"));
  358. printl('  Boolean("true") = ' + TypeConverter.toBoolean("true"));
  359. print.log('  Boolean("0") = ' + TypeConverter.toBoolean("0"));
  360. printl('  Boolean("0") = ' + TypeConverter.toBoolean("0"));
  361. print.log('  Boolean(1) = ' + TypeConverter.toBoolean(1));
  362. printl('  Boolean(1) = ' + TypeConverter.toBoolean(1));
  363. printl('');

  364. printl('日期格式化:');
  365. var now = new Date();
  366. printl('  当前时间: ' + TypeConverter.formatDate(now));
  367. printl('  自定义格式: ' + TypeConverter.formatDate(now, 'YYYY年MM月DD日 HH:mm'));
  368. printl('');

  369. printl('========== 数据处理示例 ==========');
  370. var processResult = DataProcessor.batchProcess(testData);
  371. printl(DataProcessor.generateReport(processResult));
  372. printl('');

  373. printl('========== 单条数据处理详情 ==========');
  374. var singleUser = DataProcessor.processUserData(testData[0]);
  375. printl('处理后的用户对象:');
  376. printl(JSON.stringify(singleUser, null, 2));
  377. printl('');

  378. printl('========== 日志窗口操作测试 ==========');
  379. printl(logWindow.show())
  380. printl(logWindow.clear())
  381. printl(logWindow.setHeight(2500))
  382. printl(logWindow.setWidth(1000))
  383. printl(logWindow.setNoClickModel())
复制代码







欢迎光临 自动发帖软件 (http://www.fatiegongju.com/) Powered by Discuz! X3.2