如何用JS/jQuery将非空多语言字段内容复制到空字段?
实现英文非空字段同步至空法文字段
需求明确:当对象中title_en、description_en这类英文字段非空时,将内容复制到对应为空的title_fr、description_fr法文字段中。以下是几种实用实现方式:
原始数据定义
const originalData = { "id": "2331", "title_en" : "Something great", "title_fr": "", "description_en" : "Lorem ipsum something etc.", "description_fr": "", "tag_en": "im filled", "tag_fr": "another filled" };
方法一:逐个字段判断赋值(适合字段数量少的场景)
直接针对目标字段做条件判断,逻辑直观:
// 处理title字段 if (originalData.title_en && !originalData.title_fr) { originalData.title_fr = originalData.title_en; } // 处理description字段 if (originalData.description_en && !originalData.description_fr) { originalData.description_fr = originalData.description_en; } console.log(originalData); // 输出目标数据
方法二:批量映射处理(适合字段多、扩展性强的场景)
通过定义字段映射关系,批量遍历处理,新增字段只需更新映射数组:
// 定义需要同步的字段配对:[英文键名, 法文键名] const fieldPairs = [ ["title_en", "title_fr"], ["description_en", "description_fr"] ]; fieldPairs.forEach(([enKey, frKey]) => { // 校验英文字段非空、法文字段为空 if (originalData[enKey] && !originalData[frKey]) { originalData[frKey] = originalData[enKey]; } }); console.log(originalData); // 输出目标数据
jQuery版本(逻辑与原生一致)
如果项目依赖jQuery,可使用$.each替代原生遍历:
const fieldPairs = [["title_en", "title_fr"], ["description_en", "description_fr"]]; $.each(fieldPairs, function(_, pair) { const [enKey, frKey] = pair; if (originalData[enKey] && !originalData[frKey]) { originalData[frKey] = originalData[enKey]; } }); console.log(originalData);
内容的提问来源于stack exchange,提问作者Under Voltage
相关产品推荐
相关产品推荐

