javascript - 将两个函数合并为一个以简化代码
问题描述
我得到了这两个功能,它们工作得很好。但是因为我只是从那时起打电话global.replaceFields
,global.translateAll
所以我想摆脱global.replaceFields
它并将其功能放在里面global.translateAll
您将如何global.replaceFields
在global.translateAll
不丢失当前功能的情况下进行合并?
谢谢 :)
// Translate everything in that field
global.translateAll = (textfield, usersLanguage) => {
for (var property in textfield) {
if (!textfield.hasOwnProperty(property)) {
return false;
} else if (typeof textfield[property] !== "object") {
textfield[property] = global.replaceFields(textfield[property], usersLanguage);
} else {
global.translateAll(textfield[property], usersLanguage);
}
}
}
// Translate everything in that field
global.replaceFields = (textfield, usersLanguage) => {
// Keep running until all fields are replaced
while (textfield.indexOf("{{") != -1) {
// isolate the field
let fromField = textfield.substring((textfield.indexOf("{{") + 2), (textfield.indexOf("}}")));
let toField = ""
// If its a translated text
if (fromField.indexOf("trans") != -1) {
toField = usersLanguage[fromField];
textfield = textfield.replace("{{" + fromField + "}}", toField);
}
}
return (textfield);
}
解决方案
这应该工作
global.translateAll = (textfield, usersLanguage) => {
var replaceFields = (textfield, usersLanguage) => {
// Keep running until all fields are replaced
while (textfield.indexOf("{{") != -1) {
// isolate the field
let fromField = textfield.substring((textfield.indexOf("{{") + 2), (textfield.indexOf("}}")));
let toField = ""
// If its a translated text
if (fromField.indexOf("trans") != -1) {
toField = usersLanguage[fromField];
textfield = textfield.replace("{{" + fromField + "}}", toField);
}
}
return (textfield);
}
for (var property in textfield) {
if (!textfield.hasOwnProperty(property)) {
return false;
} else if (typeof textfield[property] !== "object") {
textfield[property] = replaceFields(textfield[property], usersLanguage);
} else {
global.translateAll(textfield[property], usersLanguage);
}
}
}
推荐阅读
- javascript - 如何在文本之前添加元素 div(如何在元素中附加文本)
- angular - 未收到Angular 8 Click事件
- .net-core - XUnit 测试仅适用于命令行而非 VSCode GUI
- c# - 使用 ActivateItem 的 WPF Caliburn 微内存问题
- flutter - 如何在 Flutter 中创建文本剪切?
- lisp - 如何通过符号或字符串调用 flet 函数?
- html - 使用 VBA 选择 HTML 项目
- kubernetes - 如何列出种类部署?
- html - CSS中的复杂边界半径问题(边缘曲线与角曲线不同)
- arrays - 为什么我不能访问这个数组 ForEach 循环中的数据?SwiftUI