初始化javascript函数数组

Initialize javascript functions array

本文关键字:数组 函数 javascript 初始化      更新时间:2023-09-26

我需要通过编程从字符串数组中创建一个Javascript函数数组。

例如,如果我的数组是这样的:

myArray = ['a', 'b', 'c', 'd']

我需要创建这样的东西:

myFunctArray = [
    function(d) {
        return d['a'];
    },
    function(d) {
        return d['b'];
    },
    function(d) {
        return d['c'];
    },
    function(d) {
        return d['d'];
    }
]

现在,我需要能够对任何数组进行编程,所以我尝试了这个:

for(var i = 0; i < myarray.length; i++){
    myFunctArray.push(function(d){            
        return d[myArray[i]];
    });
}

我得到的是一个函数与上一个完全相同的数组。我认为这是一个范围问题,但我找不到解决方案。我尝试了很多不同的变体,但没有成功,谷歌也没帮上忙。感谢任何帮助,谢谢!

在函数内部使用i而不"冻结"值确实是一个范围问题。你可以用这个closure 来解决它

for(var i = 0; i < myarray.length; i++){
    function(index) {
        myFunctArray.push(function(d){            
            return d[myArray[index]];
        });
    }(i); // call immediately inline defined function
}