Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何为动态创建的变量创建和赋值?_Javascript_Jquery_Eval - Fatal编程技术网

Javascript 如何为动态创建的变量创建和赋值?

Javascript 如何为动态创建的变量创建和赋值?,javascript,jquery,eval,Javascript,Jquery,Eval,我正在努力让这一切顺利进行: function whatever(arg) { eval(arg) + '_group' = []; } 其目的是只有一个函数,而不是有三个内容基本相同但变量名不同的函数 最后,我想要一些类似于: a_group = []; b_group = []; 这样做,我得到的错误是: ReferenceError: Invalid left-hand side in assignment 编辑 这是我试图使其工作的原始函数。但这行不通 function col

我正在努力让这一切顺利进行:

function whatever(arg) {
  eval(arg) + '_group' = [];
}
其目的是只有一个函数,而不是有三个内容基本相同但变量名不同的函数

最后,我想要一些类似于:

a_group = [];
b_group = [];
这样做,我得到的错误是:

ReferenceError: Invalid left-hand side in assignment
编辑

这是我试图使其工作的原始函数。但这行不通

function collect_all_values_for(field_name) {

    switch(field_name) {
        case 'states':
            use = 'state';
        case 'cities':
            use = 'city';
        case 'neighborhoods':
            use = 'neighborhood';        
    }

    window[field_name + '_group'] = [];

    n_fields = $('[id^=' + use + '_]').length-1;

    i = 0;
    field_value = 0;
    for (i = 0; i<= n_fields; i++) {

        if (i == 0) {
            field_value = $('#' + use).val(); 
        }else{
            field_value = $('#' + use + '_id' + i).val();
        }

        //states_group.push(field_value);
        window[field_name + '_group'].push(field_value);
    }

}
然后我可以称之为:

collect_all_values_for('states');
collect_all_values_for('cities');
collect_all_values_for('neighborhoods');
提前谢谢

function whatever(arg) {
  window[arg + '_group'] = [];
}
这将
a_组
b_组
设置为全局变量

要访问这些变量,请使用:

window['a_group']、window['b_group']
等等

据编辑 在
开关中
应使用
break

switch(field_name) {
    case 'states':
        use = 'state';
        break;
    case 'cities':
        use = 'city';
        break;
    case 'neighborhoods':
        use = 'neighborhood';   
        break;     
}
使用本地对象(无窗口对象)和更好的
虽然你真的不应该使用eval,但这应该会有帮助


eval(arg+'_group')=[]

只是为了增加@theparadox的答案。
我更喜欢使用以下方法进行切换。

var options =  {
    'states' : 'state',
    'cities': 'city',
    'neighborhoods': 'neighborhood'    
};
use = options[field_name];

或者,如果您只想删除最后一个字母,您可以这样做。

use=field\u name.slice(0,-1)


不错!我不知道这种方式。非常感谢。
var myObject = {};

function whatever(arg) {
  myObject[arg + '_group'] = [];
  // output: { 'a_group' : [], 'b_group' : [], .. }
}

// to set value
myObject[arg + '_group'].push( some_value );

// to get value
myObject[arg + '_group'];
var options =  {
    'states' : 'state',
    'cities': 'city',
    'neighborhoods': 'neighborhood'    
};
use = options[field_name];