关于如何避免使用临时变量的建议

时间:2019-10-02 14:27:20

标签: javascript

getLanguageCodeIndexPosition函数在url的令牌中找到语言代码的位置,我想避免使用临时的position变量,这也许是一种更实用的解决方案。

我不知道该语言令牌是en还是es,因此如果找到一个返回的位置,我会寻找两者

我欢迎您的建议

const languages = ["en", "es"];
const path = "http://www.app.name.local/es/compass/sample-compass/compass-temporal";

function getLanguageCodeIndexPosition() {
    const tokens = path.split("/");
    let position = undefined;

    languages.forEach(sef => {
        const index = tokens.findIndex(token => token === sef);

        if (index !== -1) {
            position = index;

            return false;
        }
    });

    return position;
}

const position = getLanguageCodeIndexPosition();

console.log(position);

3 个答案:

答案 0 :(得分:5)

修改findIndex下的功能:

const languages = ["en", "es"];
const path = "http://www.app.name.local/es/compass/sample-compass/compass-temporal";

function getLanguageCodeIndexPosition() {
    const tokens = path.split("/");
    return tokens.findIndex(token => languages.includes(token));
}

console.log(getLanguageCodeIndexPosition());

答案 1 :(得分:1)

您可以使用map()find()获得第一个匹配的语言索引。

const languages = ["en", "es"];
const path = "http://www.app.name.local/es/compass/sample-compass/compass-temporal";

function getLanguageCodeIndexPosition() {
    const tokens = path.split("/");
    return languages
      .map(lang => tokens.indexOf(lang))
      .find(i => i >= 0);
}

const position = getLanguageCodeIndexPosition();

console.log(position);

您还可以使用reduce()方法来获取所有语言索引的数组。

const languages = ["en", "es"];
const path = "http://www.app.name.local/es/compass/sample-compass/compass-temporal";

function getLanguageCodeIndexPosition() {
    const tokens = path.split("/");
   
    return languages.reduce((acc, lang) => {
      const i = tokens.indexOf(lang);
      return i >= 0 ? [...acc, i] : acc;
    }, []);
}

const position = getLanguageCodeIndexPosition();

console.log(position);

答案 2 :(得分:1)

您可以使用.includes()作为.findIndex()的谓词。

const languages = ["en", "es"];
const path = "http://www.app.name.local/es/compass/sample-compass/compass-temporal";

const getLanguageCodeIndexPosition = () => path.split('/').findIndex(t => languages.includes(t));

console.log( getLanguageCodeIndexPosition() );