Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/425.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 确定数组的真实值_Javascript_Jquery - Fatal编程技术网

Javascript 确定数组的真实值

Javascript 确定数组的真实值,javascript,jquery,Javascript,Jquery,我有一个这样的数组 var promises = [true,false,true,true,false]; 确定真实结果的最佳方法是什么 从所有的价值观 我可以使用forEach或for in但是还有其他更好的方法吗 我没有使用下划线或lodash,而是使用jQuery 例如,在上述情况下,结果将为false 基本上,truthy结式是对所有值的AND运算。您可以这样使用 var承诺=[true,false,true,true,false]; //var承诺=[真实,真实,真实,真实,真实

我有一个这样的数组

var promises = [true,false,true,true,false];
确定真实结果的最佳方法是什么 从所有的价值观

我可以使用
forEach
for in
但是还有其他更好的方法吗

我没有使用下划线或lodash,而是使用jQuery

例如,在上述情况下,结果将为
false

基本上,truthy结式是对所有值的AND运算。

您可以这样使用

var承诺=[true,false,true,true,false];
//var承诺=[真实,真实,真实,真实,真实];
var isTrue=promises.every(函数(el){
返回el==true;
})

控制台日志(isTrue)使用递归性有点有趣:

function truthy (a) {
    return function aux (a, i) {
        return i === a.length || !!a[i] && aux(a, ++i);
    }(a, 0);
}
用法:

truthy([]); // true
truthy([true]); // true
truthy([true, 0]); // false
truthy([true, '']); // false

.filter
可能是一个有效的解决方案,在我看来,无论您期望的输出是什么(目前还不清楚)。编辑后,
。每一个
。一些
可能是完成结果的最快和最干净的方法。请定义“所有值的真实值结果”。您想知道所有值是真实值还是其中任何值是真实值吗?请参阅并编辑问题@OlegThanks@Alexander:)进一步有趣的测试:
truthy([]);//true
truthy([null]);//错误
。同时,未定义的变量得到不同的处理。例如:
var-somevar;truthy([somevar]);//false
truthy([someothervar])
抛出
未捕获引用错误:未定义someothervar
。争论空数组是否为真,而只有空条目的数组是否为假,似乎是一种哲学,但更务实的做法是确定数组中的“未定义”引用是否应被预期为可能的数组成员并强制转换为假,或者此“类型”的输入是否为假应在较低的温度下失败-level@Anthony我不太清楚:-|
未定义的
变量和
引用错误
是不同的事情。没关系。结果表明ReferenceError是在数组实例化时抛出的,而不是在truthy函数中,因此由于ReferenceError,它实际上从未到达truthy函数。因此,truthy函数需要预测处理的数组成员可能是一个未定义和未声明的变量引用(如
[someNewVar]
)的想法实际上是不可能的,因为尝试使用这样的变量创建/更新数组会在该数组可以在其他地方使用之前失败。