gpt4 book ai didi

javascript - 如何将javascript数组转换为函数

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:51:52 24 4
gpt4 key购买 nike

我有一个任意值数组。我编写了一个将数组转换为返回原始值的函数数组的函数,因此我不会调用 a[3],而是调用 a3。

这是我的代码,它不起作用? code .它给出了这个错误 Cannot call method '1' of undefined

var numToFun = [1, 2, { foo: "bar" }];
var numToFunLength = numToFun.length;

function transform(numTo) {
for (var i = 0; i < numToFunLength; i++) {
(function(num){
numTo.unshift(function() {
return num;
});
}(numTo.pop()))
}
}

var b = transform(numToFun);

console.log(numToFun);
console.log(b[1]());​

最佳答案

其他人已经在我写我的时候回答了你的问题,但我还是会把它贴出来——如果没有所有那些突然出现和不移动的东西,这可能更容易理解:

function transform(numTo) {
var r = [];
for (var i = 0; i < numTo.length; i++) {
r[i] = (function (v) {
return function() {
return v;
}
}(numTo[i]));
}
return r;
}

(我还将硬编码长度从 numToFunLength 更改为 numTo.length,因此 transform() 函数将适用于其他输入,而不仅仅是全局 numToFun 变量。)

参见 DEMO .

更新:使用 Sugar 更优雅的方式来做到这一点图书馆:

function transform(array) {
return array.map(function (v) {
return function() {
return v;
}
});
}

我喜欢这种语法,因为它使您更明确地希望将值数组映射到返回这些值的函数数组。

参见 DEMO .

关于javascript - 如何将javascript数组转换为函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11627493/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com