可以使用通配符在Javascript中调用变量吗?

时间:2016-12-06 01:08:39

标签: javascript variables wildcard string-matching

我有一个 ton 变量可供使用,信息在HTML格式之间来回传递。变量必须是全局变量,以便它们可以跨多种功能工作。所以这是列表中的一个样本:

var charDex = 0;
var charEnd = 0;
var charPer = 0;
var charStr = 0;
var charCon = 0;
var charInt = 0;
var charRat = 0;
var charRes = 0;
var charDip = 0;
var charGui = 0;
var charItd = 0;
var charLea = 0;

它们从零开始,数据输入表单,按钮将数据发送到存储数据的JS函数,然后根据所存储的数据将各种信息发送回表单。

现在,我知道我能够通过使用函数中的函数来保存一些重复,这是我迄今为止所做的。但是,这里还有很多事情要做。我想知道的是,是否有一种方法可以使用通配符和/或字符串匹配来自动匹配从表单输入到JS变量的数据?最终结果将起到以下作用:

function updateCharacter(form){
    char* = form.c*.value;
    racial* = form.r*.value;
    mod* = form.m*.value;
    total* = char* + racial* + mod*;
    form.t*.value = total*;
}

在我的情况下,charDex和form.cDex.value(等等)具有相同的后缀,所以我认为我可以做的事情,我只是不确定我错过了什么。我想过使用带阵列的for循环,但我并不完全确定如何使其工作。

1 个答案:

答案 0 :(得分:2)

不用担心!

只需使用对象。

修改:删除' char'以前使用的变量名称,因为它是reserved word

var chars = {
    Dex: "some text",
    End: 0,
    Per: 2,
    Str: 345,
    Con: "blah blah",
    Int: 0,
    Rat: 0,
    Res: 0,
    Dip: 0,
    Gui: 0,
    Itd: 0,
    Lea: 0
}

您可以使用以下任一选项访问其中的每个值:

  • chars['Dex']
  • chars.Dex

其中任何一个都会给你"一些文字"。

要迭代属性,请尝试以下操作:

for (prop in chars) {
    console.log( prop ); // this will log the name of the property
    console.log( chars[prop] ); // this will log the value
}