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);
答案 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() );