我在代码中处理数组。我的数组包含mutliple boolean。我想检查一下,如果我的数组中存在单个false,则返回false,否则为true。我做了以下
var results = self.resultCollection();
for (var i = 0; i < results.length ; i++) {
if (!results[i]) {
self.isModelValid = false;
break;
} else {
self.isModelValid = true;
}
}
现在我听到有人在jquery致电grap
或可能是grasp
时有一些事情,我没有得到证实。他告诉我,grap
/ grasp
会在一行中给你这个东西。任何人都知道这一点。
提前致谢。
答案 0 :(得分:2)
只需使用indexOf
:
var results = self.resultCollection();
self.isModelValid = (results.indexOf(false) === -1);
或者如果你真的需要额外剂量的jQuery:
self.isModelValid = ($.inArray(false, results) === -1);
只有当值实际为false
,而不是假(0
,空字符串等)时才会有效。
答案 1 :(得分:1)
var results = self.resultCollection();
self.isModelValid = $.grep(results, function(n){return n}).length == results.length;
如果$.grep
返回的已过滤数组的长度与原始数组不同,则表示该项中至少有一个为false
。当它们不相同时,self.isModelValid
也将是false
,从而产生您想要的效果。
$.grep(results, function(n){return n})
$.grep
删除所有false
值并使用过滤器return n
返回一个新数组(仅返回true项)。
$.grep(results, function(n){return n}).length == results.length
然后将新阵列的长度与原始阵列的长度进行比较。如果它们不同,则表示至少有一个项目为false
并已删除。如果它们的长度相同,则返回true
。 false
如果不同的话。{/ p>
self.isModelValid = ...
然后将布尔值分配给self.isModelValid
。
$.grep
有效,但在您的情况下可能不是最佳做法。 jQuery将尝试评估整个阵列并返回一个新阵列,从而增加性能成本。如果您的数组仅包含布尔值,请使用Blender代码。
另一方面,如果您的数组包含多种类型并且您已经在使用jQuery,那么这可能是最好的方法。
答案 2 :(得分:0)
every
可以在这里提供帮助,但它是纯JavaScript,而不是jQuery。
self.isModelValid = results.every(function(x){return x;});
答案 3 :(得分:0)
try this
var results = self.resultCollection();
self.isModelValid = (results.indexOf(false) === -1);