Javascript 这些东西中的一个和另一个不一样。。。在阵列中?
你好,我正在构建一个将一系列布尔值推送到一个数组的东西 最后,阵列的外观如下所示:Javascript 这些东西中的一个和另一个不一样。。。在阵列中?,javascript,arrays,Javascript,Arrays,你好,我正在构建一个将一系列布尔值推送到一个数组的东西 最后,阵列的外观如下所示: var booleanArray = [true, true, true, false, true]; 我想做的是创建一个函数,该函数将评估该布尔填充数组的所有值,如果有一个或多个值为false,它将执行一些操作 在不创建多个嵌套的if语句的情况下,这是完全可能的吗 如果在发现第一个值为false时停止在数组中循环,则会获得额外点数。即使数组中的一个值与其他值不同,代码也会检测并执行一些操作 var val =
var booleanArray = [true, true, true, false, true];
我想做的是创建一个函数,该函数将评估该布尔填充数组的所有值,如果有一个或多个值为false,它将执行一些操作
在不创建多个嵌套的if语句的情况下,这是完全可能的吗
如果在发现第一个值为false时停止在数组中循环,则会获得额外点数。即使数组中的一个值与其他值不同,代码也会检测并执行一些操作
var val = a[0];
for(i = 1; i< a.length; i++){
if(a[i] !== val){/*do something*/}
else{val = a[i];}
}
var-val=a[0];
对于(i=1;i
a
是您的阵列。
认为代码只是一个想法。
您必须检查
a
的长度。在执行[0]
之前,您只需检查第一个索引true和false:
因此,如果没有真成员,它们必须全部为false(或数组为空),或者如果没有假成员,它们必须全部为true(或数组为空),否则它将返回false,因为必须同时存在true和false
如果没有成员(即数组为空),则返回true。这是否意味着如果只有一项不同,则需要不同的行为?或者一个或多个?具体来说,如果其中两个东西与另一个不一样会发生什么?您真的需要数组吗?您可以有两个变量--
wasAnythingFalse
和wasAnythingTrue
--您只需设置适当的变量,而不是将布尔值推入数组。最后,如果两个都设置了,那么您就知道条件不尽相同。@Evantimboli 1或更多,但仅当为false时,并且无法检查同质实例,因为如果它们都为false,则必须执行操作。@slebetman如果一个或多个条件为false以允许任何长度的数组,则只需从i的0开始。如果数组有零个或1个成员,则它没有与其他数组不同的成员。;-)注意到这一点,我相信如果[0]是不同的东西,这将失败。你必须检查至少3件事才能知道奇怪的是什么。@MikeBell它将第一个值与所有其他值进行比较,因此如果第一个值不同,它将在第一次检查时失败。
// Returns true of all members are true or all are false,
// otherwise returns false
function checkBoolArray(arr) {
return arr.indexOf(true) == -1 || arr.indexOf(false) == -1;
}