首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >关于如何避免使用临时变量的建议

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

Stack Overflow用户
提问于 2019-10-02 22:27:21
回答 3查看 61关注 0票数 2

getLanguageCodeIndexPosition函数在url的标记中查找语言代码的位置,我想避免使用临时position变量,这可能是一个更有效的解决方案。

我不知道语言标记是en还是es,所以如果找到一个返回其位置,我会同时查找两者

我欢迎你的建议

代码语言:javascript
运行
复制
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);
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-10-02 22:46:23

修改findIndex下的函数

代码语言:javascript
运行
复制
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());

票数 5
EN

Stack Overflow用户

发布于 2019-10-02 22:40:40

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

代码语言:javascript
运行
复制
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()方法获取所有语言索引的数组。

代码语言:javascript
运行
复制
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);

票数 1
EN

Stack Overflow用户

发布于 2019-10-02 22:49:18

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

代码语言:javascript
运行
复制
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() );

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58203589

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档