我有两个函数,它们看起来很相似,但我真正不理解的是,在for
循环内部,由于输入是一个数组,为什么不需要任何索引来调用第一个数组?
我有一个数组...
var puzzlers = [
function(a) { return 8 * a - 10; },
function(a) { return (a - 3) * (a - 3) * (a - 3); },
function(a) { return a * a + 4; },
function(a) { return a % 5; }
];
我正试图通过输入循环数组。第一个函数的结果将用作下一个函数的输入,然后第一个数组将被删除。
这是我写的...
function applyAndEmpty(input, queue)
{
var length = queue.length;
for(var i = 0; i < length; i++)
{
input = queue[0](input);
queue.shift();
}
return input;
}
上面的方法给了我答案,但我发现还有另一种写法,即:
var applyAndEmpty = function(input, queue)
{
var length = queue.length;
for(var i = 0; i < length; i++)
{
input = queue.shift()(input);
}
return input;
};
我不理解的部分是
input = queue.shift()(input)
。队列queue
需要索引吗?
shift()
的作用,那就是从数组中执行一个函数并将其从数组栈中移除。 - Roko C. Buljanshift()
函数会移除数组中的第一个元素并返回它。但是对于你正在做的事情来说,这种方法效率较低。 - 4castle