gpt4 book ai didi

javascript - 通过多次使用 typeof 运算符清理复杂/不可读的 if 语句

转载 作者:行者123 更新时间:2023-11-28 13:27:22 24 4
gpt4 key购买 nike

我有一个 JavaScript 对象,其中包含绘制哪些轴数据。我需要用它来确定它是 2D 图(包含 X/Y、Y/Z 或 X/Z 上的数据)还是 3D 图(包含 X/Y/Z 上的数据)。

下面的代码有效,我相信涵盖了所有这些情况。但它非常难以阅读且复杂。有没有什么方法可以改进它,使其更具可读性和/或更简单?

预先感谢您提供的所有帮助。

var axes = {
"X": "Column 1",
"Y": "Column 2",
"Z": "Column 3"
}

if (typeof axes.X == 'undefined' && typeof axes.Y !== 'undefined' && typeof axes.Z !== 'undefined') {
alert("2D plot on Y and Z");
} else if (typeof axes.X !== 'undefined' && typeof axes.Y !== 'undefined' && typeof axes.Z == 'undefined') {
alert("2D plot on X and Y");
} else if (typeof axes.X !== 'undefined' && typeof axes.Y == 'undefined' && typeof axes.Z !== 'undefined') {
alert("2D plot on X and Z");
} else if (typeof axes.X !== 'undefined' && typeof axes.Y !== 'undefined' && typeof axes.Z !== 'undefined') {
alert("3D plot");
}

最佳答案

你可以使用循环

var axes = {
"X": "Column 1",
"Y": "Column 2",
"Z": "Column 3"
}

var axesChecked = [];

for (var prop in axes) {
if(axes.hasOwnProperty(prop) && typeof axes[prop] !== 'undefined'){
axesChecked.push(prop);
}
}

switch(axesChecked.length) {
case 3:
alert("3D plot");
break;
case 2:
alert("2D plot " + axesChecked.join(' and '));
break;
default:
throw "Need more axes";
break;
}

关于javascript - 通过多次使用 typeof 运算符清理复杂/不可读的 if 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28081678/

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