我有一个数组。假设数组是:
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');
}
那么,如何动态连接并将整个数组作为一个整体传递给函数呢?
答案 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;
}
}