通配符可以用来调用Javascript中的变量吗?

Can a wildcard be used to call variables in Javascript?

我有 变量在这里使用,信息在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 函数中,然后将基于所述存储数据的各种信息发送回表单。

现在,我知道我可以通过在函数中使用函数来减少一些重复,到目前为止我已经这样做了。但是,这里仍然发生了很多事情。我想知道的是有没有办法使用通配符and/or字符串匹配来自动匹配表单输入的数据到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(等等)具有相同的后缀,所以我认为我可以做一些事情,我只是不确定是什么我 missing.I 考虑过对数组使用 for 循环,但我不确定如何实现它。

不用担心!

只需使用一个对象即可。

编辑: 删除之前使用的 '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

其中任何一个都会给你 "some text"。


要遍历属性,试试这个:

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