YYPOST群发软件 发表于 2026-1-19 10:33:37

AIWROK软件类型转换方法例子

AIWROK软件类型转换方法例子






// 交流QQ群711841924群一,苹果内测群,528816639

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

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

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

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

print.log("5. 设置日志窗口为不可点击模式");
printl(logWindow.setNoClickModel())
print.log("日志窗口不可点击模式设置完成");
print.log("所有日志窗口操作执行完毕");
var TypeConverter = (function() {
    var self = {};
   
    /**
   * 获取值的类型
   * @param {*} value - 要检查的值
   * @returns {string} 值的类型字符串
   */
    self.getType = function(value) {
      return typeof value;
    };
   
    /**
   * 判断是否为字符串类型
   * @param {*} value - 要检查的值
   * @returns {boolean} 是否为字符串
   */
    self.isString = function(value) {
      return typeof value === 'string';
    };
   
    /**
   * 判断是否为有效数字类型(排除NaN)
   * @param {*} value - 要检查的值
   * @returns {boolean} 是否为有效数字
   */
    self.isNumber = function(value) {
      return typeof value === 'number' && !isNaN(value);
    };
   
    /**
   * 判断是否为布尔类型
   * @param {*} value - 要检查的值
   * @returns {boolean} 是否为布尔值
   */
    self.isBoolean = function(value) {
      return typeof value === 'boolean';
    };
   
    /**
   * 判断是否为非空对象
   * @param {*} value - 要检查的值
   * @returns {boolean} 是否为非空对象
   */
    self.isObject = function(value) {
      return typeof value === 'object' && value !== null;
    };
   
    /**
   * 判断是否为数组
   * @param {*} value - 要检查的值
   * @returns {boolean} 是否为数组
   */
    self.isArray = function(value) {
      return Object.prototype.toString.call(value) === '';
    };
   
    /**
   * 将值转换为数字,支持默认值
   * @param {*} value - 要转换的值
   * @param {number} - 转换失败时的默认值
   * @returns {number} 转换后的数字或默认值
   */
    self.toNumber = function(value, defaultValue) {
      if (defaultValue === undefined) {
            defaultValue = 0;
      }
      var result = Number(value);
      if (isNaN(result)) {
            return defaultValue;
      }
      return result;
    };
   
    /**
   * 将值转换为字符串,支持默认值
   * @param {*} value - 要转换的值
   * @param {string} - 值为null/undefined时的默认值
   * @returns {string} 转换后的字符串或默认值
   */
    self.toString = function(value, defaultValue) {
      if (value === null || value === undefined) {
            return defaultValue !== undefined ? defaultValue : '';
      }
      return String(value);
    };
   
    /**
   * 将值转换为布尔值
   * @param {*} value - 要转换的值
   * @returns {boolean} 转换后的布尔值
   */
    self.toBoolean = function(value) {
      if (self.isBoolean(value)) {
            return value;
      }
      if (self.isNumber(value)) {
            return value !== 0;
      }
      if (self.isString(value)) {
            return value.toLowerCase() === 'true' || (value.toLowerCase() !== 'false' && value !== '0' && value !== '');
      }
      return Boolean(value);
    };
   
    /**
   * 格式化日期为指定格式
   * @param {Date|string} date - 日期对象或日期字符串
   * @param {string} - 日期格式
   * @returns {string} 格式化后的日期字符串,无效日期返回空字符串
   */
    self.formatDate = function(date, format) {
      if (!date) return '';
      var d = date instanceof Date ? date : new Date(date);
      if (isNaN(d.getTime())) return '';
      
      format = format || 'YYYY-MM-DD HH:mm:ss';
      
      var year = d.getFullYear();
      var month = String(d.getMonth() + 1).padStart(2, '0');
      var day = String(d.getDate()).padStart(2, '0');
      var hours = String(d.getHours()).padStart(2, '0');
      var minutes = String(d.getMinutes()).padStart(2, '0');
      var seconds = String(d.getSeconds()).padStart(2, '0');
      
      return format
            .replace('YYYY', year)
            .replace('MM', month)
            .replace('DD', day)
            .replace('HH', hours)
            .replace('mm', minutes)
            .replace('ss', seconds);
    };
   
    /**
   * 安全解析JSON字符串,支持默认值
   * @param {string} jsonStr - JSON字符串
   * @param {*} - 解析失败时的默认值
   * @returns {*} 解析后的对象或默认值
   */
    self.safeParseJSON = function(jsonStr, defaultValue) {
      try {
            return JSON.parse(jsonStr);
      } catch (e) {
            return defaultValue !== undefined ? defaultValue : null;
      }
    };
   
    return self;
})();

var DataProcessor = (function() {
    var self = {};
   
    /**
   * 处理单条用户数据,进行类型转换和验证
   * @param {Object} rawData - 原始用户数据
   * @returns {Object} 处理后的用户对象
   */
    self.processUserData = function(rawData) {
      var result = {
            id: TypeConverter.toNumber(rawData.id, 0),
            name: TypeConverter.toString(rawData.name, 'Unknown'),
            age: TypeConverter.toNumber(rawData.age, 0),
            isActive: TypeConverter.toBoolean(rawData.isActive),
            score: TypeConverter.toNumber(rawData.score, 0),
            tags: TypeConverter.isArray(rawData.tags) ? rawData.tags : [],
            createdAt: TypeConverter.formatDate(rawData.createdAt),
            metadata: TypeConverter.isObject(rawData.metadata) ? rawData.metadata : {}
      };
      
      result.isValid = result.id > 0 && result.name !== 'Unknown';
      result.displayScore = result.score.toFixed(2);
      result.ageGroup = self._calculateAgeGroup(result.age);
      
      return result;
    };
   
    /**
   * 根据年龄计算年龄段
   * @param {number} age - 年龄
   * @returns {string} 年龄段描述
   */
    self._calculateAgeGroup = function(age) {
      if (age < 18) return '未成年';
      if (age < 30) return '青年';
      if (age < 50) return '中年';
      return '老年';
    };
   
    /**
   * 批量处理用户数据数组
   * @param {Array} dataArray - 用户数据数组
   * @returns {Object} 处理结果,包含成功、失败和统计信息
   */
    self.batchProcess = function(dataArray) {
      var results = [];
      var errors = [];
      
      for (var i = 0; i < dataArray.length; i++) {
            try {
                var processed = self.processUserData(dataArray);
                results.push(processed);
            } catch (e) {
                errors.push({
                  index: i,
                  data: dataArray,
                  error: e.message
                });
            }
      }
      
      return {
            success: results,
            failed: errors,
            summary: {
                total: dataArray.length,
                successCount: results.length,
                failedCount: errors.length,
                successRate: (results.length / dataArray.length * 100).toFixed(2) + '%'
            }
      };
    };
   
    /**
   * 生成数据处理报告
   * @param {Object} processResult - 批量处理结果对象
   * @returns {string} 格式化的报告字符串
   */
    self.generateReport = function(processResult) {
      var report = [];
      report.push('========== 数据处理报告 ==========');
      report.push('总记录数: ' + processResult.summary.total);
      report.push('成功处理: ' + processResult.summary.successCount);
      report.push('处理失败: ' + processResult.summary.failedCount);
      report.push('成功率: ' + processResult.summary.successRate);
      report.push('');
      
      if (processResult.success.length > 0) {
            report.push('--- 成功处理的记录 ---');
            for (var i = 0; i < Math.min(3, processResult.success.length); i++) {
                var item = processResult.success;
                report.push('ID: ' + item.id + ' | 姓名: ' + item.name +
                           ' | 年龄: ' + item.age + ' (' + item.ageGroup + ')' +
                           ' | 活跃: ' + (item.isActive ? '是' : '否') +
                           ' | 分数: ' + item.displayScore);
            }
            if (processResult.success.length > 3) {
                report.push('... 还有 ' + (processResult.success.length - 3) + ' 条记录');
            }
            report.push('');
      }
      
      if (processResult.failed.length > 0) {
            report.push('--- 处理失败的记录 ---');
            for (var j = 0; j < processResult.failed.length; j++) {
                var fail = processResult.failed;
                report.push('索引: ' + fail.index + ' | 错误: ' + fail.error);
            }
      }
      
      report.push('================================');
      return report.join('\n');
    };
   
    return self;
})();

var testData = [
    {
      id: "1001",
      name: "张三",
      age: "25",
      isActive: "true",
      score: "95.5",
      tags: ["JavaScript", "Android"],
      createdAt: new Date("2024-01-15T10:30:00"),
      metadata: { department: "研发部", level: "高级" }
    },
    {
      id: "1002",
      name: "李四",
      age: "35",
      isActive: "false",
      score: "88.3",
      tags: ["iOS", "React Native"],
      createdAt: "2024-02-20T14:45:00",
      metadata: { department: "产品部", level: "中级" }
    },
    {
      id: "1003",
      name: "王五",
      age: "16",
      isActive: "1",
      score: "92.7",
      tags: ["Python", "AI"],
      createdAt: new Date("2024-03-10T09:15:00"),
      metadata: { department: "AI实验室", level: "初级" }
    },
    {
      id: "",
      name: "",
      age: "invalid",
      isActive: "yes",
      score: "abc",
      tags: null,
      createdAt: "invalid-date",
      metadata: null
    },
    {
      id: "1005",
      name: "赵六",
      age: "55",
      isActive: "0",
      score: "76.2",
      tags: ["Java", "Spring"],
      createdAt: new Date("2024-04-05T16:20:00"),
      metadata: { department: "架构部", level: "专家" }
    }
];

printl('========== 类型转换工具测试 ==========');
printl('类型检测:');
printl('typeof "Hello" = ' + TypeConverter.getType("Hello"));
printl('typeof 123 = ' + TypeConverter.getType(123));
printl('typeof true = ' + TypeConverter.getType(true));
printl('typeof = ' + TypeConverter.getType());
printl('typeof {a:1} = ' + TypeConverter.getType({a:1}));
printl('');

printl('类型转换:');
print.log('Number("3.14") = ' + TypeConverter.toNumber("3.14"));
printl('Number("3.14") = ' + TypeConverter.toNumber("3.14"));
print.log('Number("abc") = ' + TypeConverter.toNumber("abc", 0));
printl('Number("abc") = ' + TypeConverter.toNumber("abc", 0));
print.log('String(123) = ' + TypeConverter.toString(123));
printl('String(123) = ' + TypeConverter.toString(123));
print.log('String(true) = ' + TypeConverter.toString(true));
printl('String(true) = ' + TypeConverter.toString(true));
print.log('Boolean("true") = ' + TypeConverter.toBoolean("true"));
printl('Boolean("true") = ' + TypeConverter.toBoolean("true"));
print.log('Boolean("0") = ' + TypeConverter.toBoolean("0"));
printl('Boolean("0") = ' + TypeConverter.toBoolean("0"));
print.log('Boolean(1) = ' + TypeConverter.toBoolean(1));
printl('Boolean(1) = ' + TypeConverter.toBoolean(1));
printl('');

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

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

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

printl('========== 日志窗口操作测试 ==========');
printl(logWindow.show())
printl(logWindow.clear())
printl(logWindow.setHeight(2500))
printl(logWindow.setWidth(1000))
printl(logWindow.setNoClickModel())


页: [1]
查看完整版本: AIWROK软件类型转换方法例子