如何将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]();
谢谢你的帮助!