如何在JavaScript中避免大量的条件编程?
How to avoid a lot of conditional programming in JavaScript?
假设我们有这样的代码:
有很多标准数据检查(如果 属性 存在...for..if 有自己的...end 等)那么它是 "normal code" 吗?因为我的Java朋友看到了,他问我:你为什么写出低质量的代码?
还有其他问题:是否存在某种方法可以简化每种方法等中的数据检查?例如:"check if property in obj exists"。 (我不想使用打字稿)。我经常使用它,但我想知道普通 JS 是如何完成它的。 (我尝试使用 es7 装饰器,但它们只使用方法。不是纯函数等)
var resultList;
var obj = {
elem1 : [
{
"type" : "zeta_0"
},
{
"type" : "beta_0"
},
{
"type" : "omega_0"
}
],
elem2 : [
{
"type" : "zeta_1"
},
{
"type" : "beta_1"
},
{
"type" : "omega_1"
}
]
}
function fillResultSet(sourceData) {
var res = [];
if (sourceData && sourceData.elem1) {
for (var key in sourceData) {
if (sourceData.hasOwnProperty(key)) {
res.push(sourceData[key][0].type);
}
}
}
return res;
}
resultList = fillResultSet(obj);
你可以看看map(为什么主对象中需要标识符,它不能是数组吗?):
result=Object.values(obj).map(el=>el[0].type);
由于 "doesnt exist" 在 js 中是假的,如果 sth 存在,最简单的模式是 OR (||) 运算符:
(document.getElementById("test")||document.body).innerHTML="test";
如果你想return一个使用函数式编程的所有类型的数组,使用这个:
function fillResultSet(sourceData) {
var result = [];
Object.getOwnPropertyNames(sourceData || {}).forEach(function(key){
sourceData[key].forEach(function(e){
result.push(e.type);
});
});
return result;
}
假设我们有这样的代码:
有很多标准数据检查(如果 属性 存在...for..if 有自己的...end 等)那么它是 "normal code" 吗?因为我的Java朋友看到了,他问我:你为什么写出低质量的代码?
还有其他问题:是否存在某种方法可以简化每种方法等中的数据检查?例如:"check if property in obj exists"。 (我不想使用打字稿)。我经常使用它,但我想知道普通 JS 是如何完成它的。 (我尝试使用 es7 装饰器,但它们只使用方法。不是纯函数等)
var resultList;
var obj = {
elem1 : [
{
"type" : "zeta_0"
},
{
"type" : "beta_0"
},
{
"type" : "omega_0"
}
],
elem2 : [
{
"type" : "zeta_1"
},
{
"type" : "beta_1"
},
{
"type" : "omega_1"
}
]
}
function fillResultSet(sourceData) {
var res = [];
if (sourceData && sourceData.elem1) {
for (var key in sourceData) {
if (sourceData.hasOwnProperty(key)) {
res.push(sourceData[key][0].type);
}
}
}
return res;
}
resultList = fillResultSet(obj);
你可以看看map(为什么主对象中需要标识符,它不能是数组吗?):
result=Object.values(obj).map(el=>el[0].type);
由于 "doesnt exist" 在 js 中是假的,如果 sth 存在,最简单的模式是 OR (||) 运算符:
(document.getElementById("test")||document.body).innerHTML="test";
如果你想return一个使用函数式编程的所有类型的数组,使用这个:
function fillResultSet(sourceData) {
var result = [];
Object.getOwnPropertyNames(sourceData || {}).forEach(function(key){
sourceData[key].forEach(function(e){
result.push(e.type);
});
});
return result;
}