检查[变量名称] + [数字]是否存在?

时间:2016-10-23 17:35:29

标签: javascript

我使用下面的代码检查var1是否存在,然后分配另一个变量(promt)来存储var1,前提是用户键入变量。问题是我需要检查大约20个变量,所以我的代码看起来像下面的十倍:

    if (typeof var1 !== 'undefined') {
        if(selection==var1){
            var promt = var1;
        }           
    }
    if (typeof var2 !== 'undefined') {
        if(selection==var2){
            var promt = var2;
        }           
    }

如果我有超过20个变量,这(a)会产生大量低效的代码,(b)可能会导致错误。
有没有办法检查var1,var2,var3等是否存在然后在变量停止时停止检查?
目标是能够有一百个变量并且仍然具有相同的数量如果有两个代码我会有。

2 个答案:

答案 0 :(得分:2)

如果您的变量是对象上的字段,则可以轻松地动态构建字段名称:

fieldname = 'var' + index;
if (typeof obj[fieldname] !== 'undefined') {
    if (selection == obj[fieldname]){
        var promt = obj[fieldname];
    }           
}

对于局部变量,我无法提供解决方案。

答案 1 :(得分:0)

第一件事var首先是javascript中的保留字,所以你不能将它用作变量名,因此我在这里使用_var

我为这个解决方案做了jsFiddle,所以请查看。

您还可以查看以下代码:

for (i in _var) {
  // Loop through all values in var
  if ((typeof _var [i] !== undefined) &&
    selection_array.indexOf(_var [i]) >= 0) {
    // note that array.indexOf returns -1 if selection_array does not contain var [i]
        prompt = _var[i]; // use this if you only want last var[i] satisifying the condition to be stored
    prompt_array.push(_var[i]);// use this if you want to store all satisifying values of var[i]
  }
}

另请查看以下代码段



// Lets declare and give some example value to _var, Note that you cannot use var as variable name as it is a reserver word in javascript
var _var = ['foo1', 'foo2', 'foo3', 'foo4'];

// Declare a variable called prompt (actually not necessary normally)
var prompt;

// Declare a array called prompt_array to store the output
var prompt_array = [];

// Declare and give some example value to selection_array
var selection_array = ['foo2', 'foo3'];

// main program to solve the problem
for (i in _var) {
  // Loop through all values in var
  if ((typeof _var [i] !== undefined) &&
    selection_array.indexOf(_var [i]) >= 0) {
    // note that array.indexOf returns -1 if selection_array does not contain var [i]
		prompt = _var[i]; // use this if you only want last var[i] satisifying the condition to be stored
    prompt_array.push(_var[i]);// use this if you want to store all satisifying values of var[i]
  }
}

// output for visualizing the result
document.getElementById('output').innerHTML += 'prompt = ' + prompt + '<br/>';
document.getElementById('output').innerHTML += 'prompt_array = ' + prompt_array.toString();
&#13;
<div id="output">

</div>
&#13;
&#13;
&#13;

如果您对此有进一步的问题,可以通过评论问我:D。