首页 > 解决方案 > 将两个函数合并为一个以简化代码

问题描述

我得到了这两个功能,它们工作得很好。但是因为我只是从那时起打电话global.replaceFieldsglobal.translateAll所以我想摆脱global.replaceFields它并将其功能放在里面global.translateAll

您将如何global.replaceFieldsglobal.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);
}

标签: javascript

解决方案


这应该工作

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);
        }
    }
}

推荐阅读