繁体   English   中英

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

[英]Explode array elements into comma-separated arguments (Node.js)

假设我有一个带有任意数量参数的函数(最后一个是回调):

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

但它很难看。 我希望能够提取前几个参数并执行以下操作:

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

当然我可以为xxx.create()编写一个包装器,但我希望它是干净的。

谢谢。

你正在寻找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);

会做的。

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

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/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM