【问题标题】:Can a wildcard be used to call variables in Javascript?Javascript 中可以使用通配符调用变量吗?
【发布时间】:2017-04-20 13:10:14
【问题描述】:

我有一个 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 (etcetera) 具有相同的后缀,所以我认为我可以做 一些事情,我只是不确定我缺少什么。我考虑过使用带有数组的 for 循环,但我不确定如何实现。

【问题讨论】:

  • 不清楚您要达到的目标。 *updateCharacter 中的预期结果是什么?
  • JavaScript 中没有用于 var 的通配符运算符。 * 是乘法。

标签: javascript variables wildcard string-matching


【解决方案1】:

不用担心!

只需使用一个对象。

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

【讨论】:

  • 这看起来已经很有帮助了。我会在对象上做更多的挖掘,看看有什么工具能给我。
  • @Salakavala - 哦天哪,我应该意识到这一点并警告你...不要使用变量名“char”,因为它是 JavaScript 中的保留关键字! See a full list here!我会更新我的答案。
  • @Salakavala - 另外,没问题!如果回答了您的问题,您可以将我的回答标记为已接受:)
  • 我在想,如果我可以将表单内容转换为数组,并在 for 循环中与对象的属性并行运行,那么这将达到预期的效果。我们将拭目以待,但无论哪种方式,这都是朝着正确方向迈出的重要一步。感谢您的帮助!
  • 如果需要使用数组,也是可以的。你想让我也用它来编辑我的答案吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-14
  • 2012-02-13
  • 1970-01-01
  • 1970-01-01
  • 2018-06-17
相关资源
最近更新 更多