通过Javascript

时间:2017-07-28 15:02:14

标签: javascript node.js

我遇到了一个相当烦人的小语法问题。我目前正在使用Scissors a Node Module来处理pdf文件。

Docs:

中描述了选择某些Pdfs页面的语法
var scissors = require('scissors');
var pdf = scissors('in.pdf')
   .pages(4, 5, 6, 1, 12)

这实际上对我有用,但我想动态地这样做。我如何在javascript中将整数连接到逗号?如果我传递一个字符串,该函数就不再起作用了。

提前多多感谢

4 个答案:

答案 0 :(得分:2)

您将n个值作为参数传递给函数。如果将它连接成一个String,你将只传递一个参数,即连接的String。

您可能希望使用点差运算符 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Spread_operator

如果您将数字放入数组,则需要将它们传递给函数,如下所示:

var scissors = require('scissors');
var pages = [4, 5, 6, 1, 12];
var pdf = scissors('in.pdf')
   .pages(...pages);

答案 1 :(得分:2)

您可以使用Function.prototype.apply。

var scissors = require('scissors');
var pdf = scissors('in.pdf'),
    args = [4, 5, 6, 1, 12];

scissors.pages.apply(pdf, args);

答案 2 :(得分:1)

您应该能够将一组页码传递给该函数。 我看了scissors source code,他们似乎实际上在处理这些论点:

/**
 * Creates a copy of the pages with the given numbers
 * @param {(...Number|Array)} Page number, either as an array or as     arguments
 * @return {Command} A chainable Command instance
 */
Command.prototype.pages = function () {
  var args = (Array.isArray(arguments[0])) ?
    arguments[0] : Array.prototype.slice.call(arguments);
  var cmd = this._copy();
  return cmd._push([
    'pdftk', cmd._input(),
    'cat'].concat(args.map(Number), [
      'output', '-'
      ]));
};

您可以传递多个参数,这些参数将与Array.prototype.slice组合成一个数组,或者只传递一个将直接使用的数组。

var scissors = require('scissors');

var pages = [];

/* collect desired pages */
pages.push(23);
pages.push(42);
pages.push(1337);

var pdf = scissors('in.pdf').pages(pages);

答案 3 :(得分:0)

我假设您的意思是要将一组参数传递给pages函数。您可以使用javascript的apply function

来实现此目的
var scissors = require('scissors');
var pdf = scissors('in.pdf')

pdf.pages.apply(pdf, [4, 5, 6, 1, 12])