[英]If-else condition in JavaScript more dynamic
I have a JavaScript code which has many if-else conditions for different brands wrt html 我有一个JavaScript代码,其中包含针对不同品牌的许多if-else条件wrt html
function get_brand_label(b) {
var brand1label = '<div class="brand1_label">B1</div>';
var brand2label = '<div class="brand2_label">B2</div>';
var brand3label = '<div class="brand3_label">B3</div>';
var brand4label = '<div class="brand4_label">B4</div>';
if (b == 'Brand1') {
return brand1label;
} else if (b == 'Brand2') {
return brand2label;
} else if (b == 'Brand3') {
return brand3label;
} else if (b == 'Brand4') {
return brand4label;
}
}
I am using this get_brand_label function in another function as: 我在另一个函数中将此get_brand_label函数用作:
var label = get_brand_label(d.brand);
In future, if I want to add B5 and B6, I need to add new if-else conditions 将来,如果要添加B5和B6,则需要添加新的if-else条件
So before adding new brands, is there any way to make the above existing code more dynamic so that I don't need to add if-else conditions in future while adding new brands 因此,在添加新品牌之前,有什么方法可以使上述现有代码更具动态性,以便将来在添加新品牌时无需添加if-else条件
You can just make a map of labels and brands and then return the label based on the brand: 您可以制作标签和品牌的地图,然后根据品牌返回标签:
const brandLabelMap = {
Brand1: '<div class="brand1_label">B1</div>',
Brand2: '<div class="brand2_label">B2</div>',
Brand3: '<div class="brand3_label">B3</div>',
Brand4: '<div class="brand4_label">B4</div>'
};
function get_brand_label(b) {
return brandLabelMap[b];
}
Try this one 试试这个
const yourFunction = (label) => {
return label + "label";
}
yourFunction(label);
you don't even need if\\else you can return label + your brand. 您甚至不需要\\可以返回标签+您的品牌。
You can use an object
instead, add the extra key/value pairs when you want to extend it 您可以改用一个object
,当您想扩展它时添加额外的键/值对
function get_brand_label(b) { let mapping = { 'Brand1': '<div class="brand1_label">B1</div>', 'Brand2': '<div class="brand1_label">B2</div>', 'Brand3': '<div class="brand1_label">B3</div>', 'Brand4': '<div class="brand1_label">B4</div>', } return mapping[b] } console.log(get_brand_label('Brand2'))
Like others have suggested, use an object to map key-value-pairs and construct your HTML from it, like so: 就像其他人建议的那样,使用一个对象来映射键值对并从中构造HTML,如下所示:
function get_brand_label(b) { const brandlabels = { "Brand1" : "B1", "Brand2" : "B2", "Brand3" : "B3", "Brand4" : "B4", }; return `<div class="${b.toLowerCase()}_label">${brandlabels[b]}</div>`; } console.log(get_brand_label("Brand1"));
${b.toLowerCase()}_label
will automatically create lower-case classnames. ${b.toLowerCase()}_label
将自动创建小写的类名。 However if your brands contain spaces or other characters that are not valid for css you need to take care of that, too. 但是,如果您的品牌包含对CSS无效的空格或其他字符,则也需要注意这一点。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.