我有一个数组,里面填充了这样的变量名称:
[[1, 3], [0.7, 2.6], [9, 1.4], ...]
除了var myVariables = [variable1,variable2,variable3,variable4];
还有一个简单的方法来测试是否所有这些变量都被分配了一个值(我的代码中的其他地方)?
答案 0 :(得分:1)
我建议使用Array.some
,这种方法有可能你不必迭代整个数组:
Array#map
答案 1 :(得分:1)
您可以使用Array.prototype.some()
方法:
some()方法测试数组中的某个元素是否通过了 测试由提供的功能实现。
它可能比forEach
方法更有效,因为一旦元素匹配条件,它就会停止迭代(以某种方式短路)。
例如要检查所有元素是否为> 0
,请使用反向条件some()
,即:<=0
。
var isFailed = [0, 1, 2, 3, 4].some(x => x <= 0);
例如,在此处,第一次迭代后,some()
退出并返回false
。
答案 2 :(得分:0)
return myVariables.indexOf(undefined) === -1;
答案 3 :(得分:0)
如果您的某个变量未定义,则会抛出ReferenceError
,如Felix Kling在热门评论中提到的那样。否则,如果它具有值undefined
,那么您可以检查您的数组是否包含undefined
值。
Reference Error
如果您执行以下代码,则会ReferenceError
,因为variable1
从未定义过。
const myArray = [variable1]
&#13;
但是下一个代码只会创建一个带有未定义值的数组,因为声明了变量:
let variable1
const myArray = [variable1]
undefined
使用ES 2016 includes()
:
const isAllDefined = !myVariables.includes(undefined)
// use this boolean where you need it