将数组元素拆分为逗号分隔的参数(Node.js)

3

假设我有一个函数,它可以接受任意数量的参数(最后一个是回调函数):

xxx.create ('arg1', 'arg2', ..., 'arg10', callback) {
    ...
}

但这很丑陋。我想要能够提取前几个参数,并做出如下操作:

var args = ['arg1', 'arg2', ..., 'arg10']
xxx.create (args.explode(), callback) {
    ...
}

当然,我可以为xxx.create()编写一个包装器,但我希望它更加简洁。谢谢。
2个回答

7
你正在寻找 Function.apply
var args = ['arg1', 'arg2', ..., 'argN'];
xxx.create.apply(xxx, args.concat(callback)) {
    // ...
}

我使用Array.concat,以便不改变原始的args数组。如果这不是问题,那么以下任何一个都可以:
var args = ['arg1', 'arg2', ..., 'argN', callback];
xxx.create.apply(xxx, args) {
    // ...
}

// or

var args = ['arg1', 'arg2', ..., 'argN'];
args.push(callback);
xxx.create.apply(xxx, args) {
    // ...
}

现在,如果你想使用一个包装器而不是暴露 Function.apply 调用:
function create_wrapper() {
    xxx.create(xxx, arguments);
}

// then

create_wrapper('arg1', 'arg2', ..., 'argN', callback);

会完成工作。


0

本地参数变量可以在这里帮助:

foo = function(){
  // convert local 'arguments' object to array ...
  argsArray = Array.prototype.slice.call(arguments);

  // pop the callback off
  callback = argsArray.pop();

  // the callback alerts the remaining, variable-length arguments list
  callback(argsArray);
};

这是 jsfiddle 链接: http://jsfiddle.net/K38YR/


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接