在映射数组函数中将三元转换为 if/else
Convert ternary to if/else in mapped array function
我在 map 函数中有一个三元函数,目前它只根据一个选项进行切换。如果用户单击该选项
,我需要能够拉出 "home" 选项并将其设置为“/”
const buttons = ['Home', 'Docs', 'About-Us'];
const buttonSlugs = buttons.map(button => button === 'About-Us' ? 'aboutus' : button.toLowerCase());
如何将三进制修改为if/else,使主页按钮可以设置为“/”?
你只是想问:
buttons.map(button => {
if(button === 'Home'){
do something
} else if (button === 'About-us') {
do something else
} else if (button === 'Docs') {
do something elser
}
}
使用 switch 和 forEach 可能会更好,因为 map returns 东西,forEach 不:
buttons.forEach(button => {
switch(button){
case 'Home':
do something
break
case 'About-us':
do something
break
case 'Docs':
do something
break
default:
break
}
}
您可以使用 switch
语句而不是 if
const buttonSlugs = buttons.map(button => {
switch (button) {
case 'About-Us':
button = 'aboutus';
break;
case 'Docs':
button = 'docs';
break;
case 'Home':
button = '/';
break;
}
})
我想这就是你想要做的。
const buttons = ['Home', 'Docs', 'About-Us'];
const buttonSlugs = buttons.map((button)=>{
if(button==='About-Us'){
return 'aboutus';
}
else if(button==='Home'){
return '/';
}
else{
return button.toLowerCase();
}
});
console.log(buttonSlugs); // for result
您可以使用如下条件:
const buttons = ['Home', 'Docs', 'About-Us'];
const buttonSlugs = buttons.map(button => {
if (button === 'About-Us') {
return 'aboutus';
}
else if (button === 'Home') {
return '/';
}
else {
return button.toLowerCase();
}
});
console.log(buttonSlugs);
但是如果您有很多映射或者您希望添加更多映射,这种方法可能会变得很丑陋。另一种方法是使用函数对象,每个函数都执行您希望给定按钮的转换:
const buttons = ['Home', 'Docs', 'About-Us'];
const transformations = {
'About-Us': () => 'aboutus',
Home: () => '/',
Docs: button => button.toLowerCase(),
};
const buttonSlugs = buttons.map(btn => transformations[btn](btn));
console.log(buttonSlugs);
这很容易扩展并将转换逻辑保留在地图之外。
如果您想要默认操作或处理缺失按钮的能力,您可以在调用检索到的函数之前检查 transformations
对象中的空键并相应地继续。
const buttons = ['Home', 'Docs', 'About-Us'];
const buttonSlugs = buttons.map(button => {
let slug;
switch (button) {
case 'About-Us':
slug = 'aboutus';
break;
case 'Home':
slug = '/';
break;
default:
slug = button.toLocaleLowerCase();
break;
}
return slug;
});
我在 map 函数中有一个三元函数,目前它只根据一个选项进行切换。如果用户单击该选项
,我需要能够拉出 "home" 选项并将其设置为“/”const buttons = ['Home', 'Docs', 'About-Us'];
const buttonSlugs = buttons.map(button => button === 'About-Us' ? 'aboutus' : button.toLowerCase());
如何将三进制修改为if/else,使主页按钮可以设置为“/”?
你只是想问:
buttons.map(button => {
if(button === 'Home'){
do something
} else if (button === 'About-us') {
do something else
} else if (button === 'Docs') {
do something elser
}
}
使用 switch 和 forEach 可能会更好,因为 map returns 东西,forEach 不:
buttons.forEach(button => {
switch(button){
case 'Home':
do something
break
case 'About-us':
do something
break
case 'Docs':
do something
break
default:
break
}
}
您可以使用 switch
语句而不是 if
const buttonSlugs = buttons.map(button => {
switch (button) {
case 'About-Us':
button = 'aboutus';
break;
case 'Docs':
button = 'docs';
break;
case 'Home':
button = '/';
break;
}
})
我想这就是你想要做的。
const buttons = ['Home', 'Docs', 'About-Us'];
const buttonSlugs = buttons.map((button)=>{
if(button==='About-Us'){
return 'aboutus';
}
else if(button==='Home'){
return '/';
}
else{
return button.toLowerCase();
}
});
console.log(buttonSlugs); // for result
您可以使用如下条件:
const buttons = ['Home', 'Docs', 'About-Us'];
const buttonSlugs = buttons.map(button => {
if (button === 'About-Us') {
return 'aboutus';
}
else if (button === 'Home') {
return '/';
}
else {
return button.toLowerCase();
}
});
console.log(buttonSlugs);
但是如果您有很多映射或者您希望添加更多映射,这种方法可能会变得很丑陋。另一种方法是使用函数对象,每个函数都执行您希望给定按钮的转换:
const buttons = ['Home', 'Docs', 'About-Us'];
const transformations = {
'About-Us': () => 'aboutus',
Home: () => '/',
Docs: button => button.toLowerCase(),
};
const buttonSlugs = buttons.map(btn => transformations[btn](btn));
console.log(buttonSlugs);
这很容易扩展并将转换逻辑保留在地图之外。
如果您想要默认操作或处理缺失按钮的能力,您可以在调用检索到的函数之前检查 transformations
对象中的空键并相应地继续。
const buttons = ['Home', 'Docs', 'About-Us'];
const buttonSlugs = buttons.map(button => {
let slug;
switch (button) {
case 'About-Us':
slug = 'aboutus';
break;
case 'Home':
slug = '/';
break;
default:
slug = button.toLocaleLowerCase();
break;
}
return slug;
});