我遇到了一个相当烦人的小语法问题。我目前正在使用Scissors a Node Module来处理pdf文件。
Docs:
中描述了选择某些Pdfs页面的语法var scissors = require('scissors');
var pdf = scissors('in.pdf')
.pages(4, 5, 6, 1, 12)
这实际上对我有用,但我想动态地这样做。我如何在javascript中将整数连接到逗号?如果我传递一个字符串,该函数就不再起作用了。
提前多多感谢
答案 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])