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

问题描述 投票: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
投票

对于您的第一次尝试,

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
上下文中。

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