使用变量连接调用函数

时间:2016-11-24 11:00:41

标签: javascript arrays

我有一个数组。假设数组是:

var group10 = ['as', '323fsd', 'asdasd', '43ssdf'];

我将数组与数组元素一起传递给函数,以便将其从数组中删除。如果删除,则返回true,否则返回true。

function removeElem(element, array){
    var index = array.indexOf(element);
    if (index > -1) {
        array.splice(index, 1);
        return true;
    }
}

棘手的部分是,我从另一个函数动态获取数值变量,它返回1 or 2 or .......... 10

如果它返回1,那么我想处理group1。如果它返回2,我想处理group2

由于名称group是常量,我将它与它返回的变量连接并将整个函数传递给函数。但是,不幸的是,一个字符串正在传递。

var arr = 'group'+10;

if( removeElem('323fsd', arr)) {
    console.log(group10);
} else {
    console.log('fail');
}

那么,如何动态连接并将整个数组作为一个整体传递给函数呢?

3 个答案:

答案 0 :(得分:2)

eval()是一种可能的解决方案,因此如果存在同名变量,变量将被视为变量

var group10 = ['as', '323fsd', 'asdasd', '43ssdf'];
var arr = 'group' + 10;

if(removeElem('323fsd', eval(arr))) {
    console.log(group10);
} else {
    console.log('fail');
}

答案 1 :(得分:0)

试试这个:

声明数组如array = window[array];。因为字符串不允许直接转换为函数或数组。



var group10 = ['as', '323fsd', 'asdasd', '43ssdf'];
function removeElem(element, array){
  array = window[array];
 var index = array.indexOf(element);
 
  if (index > -1) {
                    array.splice(index, 1);
                    return true;
                }
 }

 var arr = 'group'+10;
 if( removeElem('323fsd', arr) ){
        console.log(group10);
    }else{
        console.log('fail');
    }




答案 2 :(得分:0)

使用带变量的数组的提议' name(假设所有变量都是事先声明的)。

function removeElem(element, arrayNo) {
    var groups = [group1, group2, group3, group4, group5, group6, group7, group8, group9, group10],
        index = groups[arrayNo - 1)].indexOf(element);

    if (index > -1) {
        groups[arrayNo - 1)].splice(index, 1);
        return true;
    }
}