0

新手求助:我有一个数字数组需要转换为返回原始数字的函数数组,所以a[3]我需要调用 call 而不是 calla[3]()

例如:

[1,2,3] -> [
    function () {return 1;}, 
    function () {return 2;}, 
    function () {return 3;}
]

我该怎么做呢?

4

4 回答 4

2
var arr = [1,2,3];

for (var i = 0; i < arr.length; i++)
    arr[i] = (function(i) { return function() { return i; } })(i);

演示

于 2012-05-16T01:18:47.937 回答
1
function convert( arr ) {
    for ( var i = 0; i < arr.length; i++ ) {
        arr[i] = (function( a ) { return function() { return a; }; })( arr[i] );
    }
    return arr;
}​

var arr = convert( [1, 2, 3] );
于 2012-05-16T01:19:08.147 回答
1
[1, 2, 3].map(function(num) {
    return function(){ return num; }
});

应该做的任务

于 2012-05-16T01:24:50.710 回答
0
function transform(a) {
    var result = [];

    for (var i = 0; i < a.length; i++)
        result.push(function(value) {
            return function() {
                return value;
            }
        }(a[i]));

    return result;
}

var myArray = [1, 2, 3];
var transformed = transform(myArray);
于 2012-05-16T01:26:38.370 回答