使用传递给函数的参数动态地从一组数组中检索值

Retrieve a value dynamically from a group of arrays using a parameter passed to a function

本文关键字:一组 数组 检索 函数 动态 参数      更新时间:2023-09-26

我正在开发一个教育工具。我想根据传递给函数的参数从一组数组中检索一个值。具体来说,这段代码的目标是根据用户的选择更改一组单选按钮上的标签文本。

下面是我的代码:

    //arrays
var bodyplan = ['Anguilliform', 'Compressiform', 'Depressiform', 'Filiform', 'Fusiform', 'Globiform', 'Sagittiform', 'Taeniform']
var caudalshape = ['Continuous', 'Emarginate', 'Forked', 'Lunate', 'Rounded', 'Truncate']
var mouthposition = ["Inferior", "Jawless", "Subterminal", "Superior", "Terminal"]
//function
function changelabels(opt1, opt2){
    var i = opt2
    var c = 1
    var index = 0
    while (i>=c){
        document.getElementById("rb" + c + "lbl").innerHTML = (opt1[index]) 
        c = c + 1
        index = index + 1}}

函数的调用是在一个相当长的switch语句中进行的。例如,下面是其中一个调用:

case 4:
    changelabels("caudalshape", 6)
我上面创建的代码确实改变了标签,但不是以期望的方式。在上面的例子中,我的单选按钮不是被标记为"连续"、"边缘化"、"分叉"等等,而是被标记为"c"、"a"、"u"、"d"等等。换句话说,我写的函数不是从数组中提取值。它只是根据索引从传递给函数的参数词中选择字母。

任何帮助都会很感激。我是Javascript的新手。我一直试图解决这个问题几个小时在玩代码和搜索这些论坛。

这是因为您操作的是字符串 "caudalshape",而不是变量"caudalshape"所指向的数组。

可以通过传递数组而不是字符串来解决这个问题;

changelabels(caudalshape, 6)

与你的问题无关;您应该真的开始在代码中添加自己的分号。是的,它在JavaScript中是可选的,但在许多其他语言中不是,而且当学习另一种语言时,调整它是一种痛苦(个人经验)。有关更多信息,请参见您是否建议在JavaScript中的每个语句后使用分号?

除非我在您的实现中遗漏了什么,否则您希望传入尾形变量而不是字符串:

case 4:
    changelabels(caudalshape, 6)

1有一些多余的代码,我正在删除供您参考。还有你缺失的分号。

    //arrays
var bodyplan = ['Anguilliform', 'Compressiform', 'Depressiform', 'Filiform', 'Fusiform', 'Globiform', 'Sagittiform', 'Taeniform'];
var caudalshape = ['Continuous', 'Emarginate', 'Forked', 'Lunate', 'Rounded', 'Truncate'];
var mouthposition = ["Inferior", "Jawless", "Subterminal", "Superior", "Terminal"];
//function
function changelabels(opt1, opt2){
    var index = 0;
    while (index < opt2){
        document.getElementById("rb" + (index+1) + "lbl").innerHTML = opt1[index];
        index = index + 1;
        }
  }

这里是更正::你传递的参数是字符串,你应该传递数组变量

case 4:
    changelabels(caudalshape, 6);