gpt4 book ai didi

javascript - JS - 当条件基于对象的属性可用性时如何避免长 if else 语句

转载 作者:行者123 更新时间:2023-11-29 23:27:12 24 4
gpt4 key购买 nike

给定一个配置对象,我的函数应该执行几个数据处理之一。

例如,给出以下配置:

{
name:"my data"
}

处理后的结果是:

[{
name:"my data",
data:[1,2,3,4,5,6,7,8]
}]

如果配置是:

{
name:"my data",
dimension: "group_name"
}

然后将结果按维度分组,输出为:

[
{
name:"group 1",
data:[0.5,0.5]
},
{
name:"group 2",
data:[1,1]
},
{
name:"group 3",
data:[2,2]
}
// And so on ...
]

有多种配置可用,我想避免使用冗长的if else/switch case 语句来检查是否存在所需的对象属性。

什么是更优雅的选择?

最佳答案

你可以像这样创建一个函数映射对象:

const mapping = {
"name":()=>{
//process the data according to name configuration
},
"dimension_name":()=>{
//process the data according to name and dimension configuration
}
};

然后在您的代码中,您可以通过过滤与您的逻辑无关的属性来构建适当的 key ,如下所示:

const properties = ["dimension","name"];
const selectedProcess = Object.keys(confObject).filter((key) => {
return properties.indexOf(key) !== -1;
}).sort().join("_");

当配置中只有 name 属性时返回“name”,当两个属性都存在时返回 dimension_name

然后你就可以根据那个键调用正确的方法,像这样:

mapping[selectedProcess]();

您可以添加任意多的属性,只要记得更新属性数组即可。

关于javascript - JS - 当条件基于对象的属性可用性时如何避免长 if else 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48682665/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com