【发布时间】:2018-10-28 12:27:02
【问题描述】:
有什么方法可以使这个 if-else 语句泛化。现在,truthArray 包含从 t1 到 t4 的值。我正在寻找一种方法来为任意数量的值 t5、t6 等创建通用解决方案。我不知道如何告诉 for 循环根据真值数组的长度创建越来越多的嵌套 if 语句。谢谢。 代码说明: 首先,我想检查 t1 是否为真。如果是这样,那么 positionArray 中的第一个元素将是“左”。现在我想在 t1 已经确定为真时检查 t2 的值。如果 t2 为真,那么我将 positionArray 中的第二个元素设置为“右”。之后,我想在 t1 和 t2 已经为真时检查 t3 是否为真,并将 positionArray 的第三个元素设置为 left。然后我在 t1、t2、t3 都为真时检查 t4 是否为真,依此类推。因此, positionArray 的连续元素将是右,然后是左,然后是右,然后是左,依此类推。 现在如果 t1 不正确,那么我想从 t2 开始相同的过程。如果 t1 不为真,则位置数组的第一个元素将是未定义的。如果 t1 不为真而 t2 为真,则 positionArray 的第二个元素设置为“左”,连续的元素将是右、左、右等。 如果 t1 和 t2 都不为真,则该过程将从 t3 开始,依此类推..
var truthArray = [t1, t2, t3, t4];
var positionArray = [];
var i;
if (truthArray[0] === true) {
positionArray[0] = 'left';
if (truthArray[1] === true) {
positionArray[1] = 'right';
if (truthArray[2] === true) {
positionArray[2] = 'left';
if (truthArray[3] === true) {
positionArray[3] = 'right';
}
}
else if (truthArray[3] === true) {
positionArray[3] = 'left';
}
}
else if (truthArray[2] === true) {
positionArray[2] = 'right';
if (truthArray[3] === true) {
positionArray[3] = 'left';
}
}
else if (truthArray[3] === true) {
positionArray[3] = 'right';
}
}
else if (truthArray[1] === true) {
positionArray[1] = 'left';
if (truthArray[2] === true) {
positionArray[2] = 'right';
if (truthArray[3] === true) {
positionArray[3] = 'left';
}
}
else if (truthArray[3] === true) {
positionArray[3] = 'right';
}
}
else if (truthArray[2] === true) {
positionArray[2] = 'left';
if (truthArray[3] === true) {
positionArray[3] = 'right';
}
}
else if (truthArray[3] === true) {
positionArray[3] = 'left';
}
【问题讨论】:
-
if/else!= 循环 -
已更正。谢谢。
-
我无法弄清楚底层逻辑是什么,所以我无法判断通用解决方案是什么。您能否概述一下您尝试实现的一般逻辑?
-
为什么所有这些 IF 都是嵌套的?请编辑您的问题,并解释您要做什么。
-
现在添加了解释。希望它能澄清我正在尝试做的事情。
标签: javascript for-loop if-statement