对象克隆及属性转换-JavaScript
在某些项目中,需要将一些返回信息进行其他语言的翻译,可以为不同语言用户提供不同的语言版本。下面是一个实现:
/** * @class Translate * @description 查询字典,翻译成相应的语言 * @author jerishi * @2016.6.15 */ var mapObj = { 'test01': '测试01', 'test02': '测试02', 'test03': '测试03', 'test04': '测试04' }; var targetObj = { '1': 'test01', '2': 'test02', '3': undefined, '4': { '4': 'test04', '3': 'test03', '2': 'test02' }, '5': { '1': 'test01', '2': 'test02', '3': 'test03', '4': { '4': 123, '3': 'test03', 'G': ['test03', 'test02', 3] } } }; var Translate = { /** * 克隆对象 * @param {object} obj * @return {object} */ clone: function(obj) { var _self = this; // 简单数据类型直接返回 if (obj == null) { return obj; } if (typeof obj != 'object') { return obj; } // 复制复杂对象 var result = new obj.constructor(); for (var prop in obj) { result[prop] = _self.clone(obj[prop]); } return result; }, /** * 从字典里寻找目标词汇翻译 * @param {object} mapTest 字典对象 * @param {string} target 目标词汇 * @return {string} 返回目标词汇查询结果 */ mapStr: function(mapObj, target) { // 默认值 var result = target; // 查询字典 $.each(mapObj, function(key, value) { if (key === target) { result = value; } }); return result; }, /** * 翻译对象属性值(深层遍历) * @param {object} dictionaryObj 字典对象 * @param {object} targetObj 目标对象 * @return {object} 翻译结果 */ mapObj: function(dictionaryObj, targetObj) { var _self = this; for (var prop in targetObj) { var target = targetObj[prop]; if (typeof target == 'string') { targetObj[prop] = _self.mapStr(dictionaryObj, target); } else { _self.mapObj(dictionaryObj, target); } } return targetObj; }, /** * 克隆目标对象,并翻译 * @param {object} dictionaryObj 字典对象 * @param {object} targetObj 目标对象 * @return {object} 翻译结果 */ translate: function(dictionaryObj, targetObj) { var _self = this; // 克隆目标对象,不影响原对象 var _targetObj = _self.clone(targetObj); // 翻译对象属性值 var result = _self.mapObj(dictionaryObj, _targetObj); return result; } } console.log(Translate.translate(mapObj, targetObj)); console.log(targetObj);
数据冰冷的,但我们要让数据温暖起来,改变我们的生活!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理