我需要一个包含布尔值的数组,但它给了我变量名。
这是一个简单的例子:
我声明变量来检查与其他数据的匹配,给出布尔结果。
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 也不返回布尔值。我错过了什么?
谢谢, 医生
最简单的可能(假设
continent
已相应定义)
let arr = ["USA", "Canada", "Mexico"].map(x => new RegExp(x).test(continent))
即,直接根据
RegExp.test
函数的结果创建一个数组...