RexExp 变量给出布尔结果,但在数组中给出变量名称而不是布尔值

问题描述 投票:0回答:1

我需要一个包含布尔值的数组,但它给了我变量名。

这是一个简单的例子:

我声明变量来检查与其他数据的匹配,给出布尔结果。

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 也不返回布尔值。我错过了什么?

谢谢, 医生

javascript arrays google-apps-script boolean
1个回答
0
投票

最简单的可能(假设

continent
已相应定义)

let arr = ["USA", "Canada", "Mexico"].map(x => new RegExp(x).test(continent))

即,直接根据

RegExp.test
函数的结果创建一个数组...

© www.soinside.com 2019 - 2024. All rights reserved.