自动发帖软件
标题:
AIWROK软件类型转换方法例子
[打印本页]
作者:
发帖软件
时间:
3 小时前
标题:
AIWROK软件类型转换方法例子
AIWROK软件类型转换方法例子
2.png
(419.4 KB, 下载次数: 0)
3 小时前
上传
1.png
(525.37 KB, 下载次数: 0)
3 小时前
上传
// 交流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) === '[object Array]';
};
/**
* 将值转换为数字,支持默认值
* @param {*} value - 要转换的值
* @param {number} [defaultValue=0] - 转换失败时的默认值
* @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} [defaultValue=''] - 值为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} [format='YYYY-MM-DD HH:mm:ss'] - 日期格式
* @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 {*} [defaultValue=null] - 解析失败时的默认值
* @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[i]);
results.push(processed);
} catch (e) {
errors.push({
index: i,
data: dataArray[i],
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[i];
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[j];
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 [1,2,3] = ' + TypeConverter.getType([1,2,3]));
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[0]);
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())
复制代码
欢迎光临 自动发帖软件 (http://www.fatiegongju.com/)
Powered by Discuz! X3.2