如何将Javascript数组转换为函数数组?

如何将Javascript数组转换为函数数组?,javascript,arrays,function,Javascript,Arrays,Function,我在采访中遇到一个问题,他们要求我将数组转换为函数数组,如下所示: var a = ["a", 24, { foo: "bar" }]; var b = transform(a); console.log(a[1]); // 24 console.log(b[1]()); // 24 我尝试了很多组合,但我不能真正做到他们要求的。有人能告诉我如何实现转换功能吗?我不确定他们的意图,但提供给定结果的简单方法如下: function transform(a){ return a.map( (

我在采访中遇到一个问题,他们要求我将数组转换为函数数组,如下所示:

var a = ["a", 24, { foo: "bar" }];
var b = transform(a);

console.log(a[1]); // 24
console.log(b[1]()); // 24

我尝试了很多组合,但我不能真正做到他们要求的。有人能告诉我如何实现转换功能吗?

我不确定他们的意图,但提供给定结果的简单方法如下:

function transform(a){
  return a.map( (el) => () => el );
}

PS:有趣的后续问题是关于
b[0]()
b[1]()
的结果与
b[2]()
的结果之间的差异,以及如何缓解以后可能出现的问题。

所需的行为有点奇怪,但您可以按照以下方法进行操作:

const transform = arr => arr.map(elmt => () => elmt)

您可以采取的一种方法是在原始数组
a
上调用
Array.prototype.map
方法-
map
方法将返回一个新数组。新数组的每个索引都将获得一个匿名函数定义的值,该函数定义在调用时将返回原始数组中相应索引的值

变量a=[“a”,24{ 傅:“酒吧” }]; var b=变换(a); console.log(a[1]);//24 console.log(b[1]());//24 函数变换(数组){ 返回数组.map(函数(el){ 返回函数(){ 返回el; } });
}您可以在这里使用一个很好的功能,代理

var arr = ["a", 24, { foo: "bar" }];

function transform(arr){

    return new Proxy(arr, {
        get: (obj, prop) => { return ()=>obj[prop] }
     });
}

var newArr = transform(arr);
newArr[0]();

谢谢你的帮助!