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);
发布于 2019-10-02 22:46:23
修改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());
发布于 2019-10-02 22:40:40
您可以使用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);
发布于 2019-10-02 22:49:18
您可以使用.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() );
https://stackoverflow.com/questions/58203589
复制相似问题