我需要一个包含布尔值的数组,但它给了我变量名。
这是一个简单的例子:
我声明变量来检查与其他数据的匹配,给出布尔结果。
var usatest = new RegExp("USA").test(continent); //this gives true result
var canadatest = new RegExp("Canada").test(continent); //this gives false result
var mexicotest = new RegExp("Mexico").test(continent); //this gives false result
从变量创建数组:
var testArray = 'usatest,canadatest,mexicotest'.split(",");
所以 testArray 是
['usatest','canadatest','mexicotest']
但想要 [ true, false, false ]
测试了其他方法:
var testArray1 = [{}];
testArray1[0] = usatest;
testArray1[1] = canadatest;
testArray1[2] = mexicotest;
结果是数组
[ true , false, false]
。
因此尝试用数组值替换名称(允许我对长列表使用 for 循环)
var testArray2 - [{}];
testArray2[0] = usatest;
testArray2[1] = testArray1[1];
testArray2[2] = testArray1[2];
期望得到
[ true, false, false]
但得到 [true , 'canadatest', 'mexicotest']
为什么在第二个数组中使用
testArray1[1]
返回变量名称而不是布尔值?也许这可以回答为什么 testArray
也不返回布尔值。我错过了什么?
谢谢, 医生
对于您的第一次尝试,
testArray
是String.split
操作的结果,所以它当然是strings
的数组。
对于你的第三次尝试:你确定你使用了正确的数组来获取数据吗,因为
testArray1[1]
是一个布尔值,没有办法,testArray1[1]
会给你canadatest
您的用例中最简单的可能是(假设
continent
已相应定义)
let arr = ["USA", "Canada", "Mexico"].map(x => new RegExp(x).test(continent))
即,直接根据
RegExp.test
函数的结果创建一个数组...
动态访问变量(即当它们的名称存储在另一个变量中时)在 JS 中是一个真正的痛苦,特别是如果它们不在全局
window
上下文中。