我希望能够在我的项目中使用HashIDs。 使用HashID,您可以从一个或n个整数创建哈希ID,如下所示:
encrypt(1);
encrypt(1,2,3,4);
encrypt(1,2,...n);
这对于一个变量已经很好用,但不幸的是我有时会收到一串我想编码的逗号分隔数字。所以它将是“1,2,3,4,5”。
当然我可以很容易地把它变成一个数组,但是数组没有帮助,因为我仍然需要单独传递贵重物品来加密。由于我不知道字符串中有多少整数,我不知道如何实现它。
巧合的是,PHP has a way for dealing with that exact same problem。
我怎样才能在JavaScript中实现这一目标?
答案 0 :(得分:2)
您可以拆分为数组并将值转换为整数,然后使用Function.prototype.apply
method调用encrypt()
将数组值作为参数传递。
这是一个解决方案:
var myArgs = "1,2,3,4,5"; // etc.
myArgs = myArgs.split(",").map(function(i) {return parseInt(i);});
encrypt.apply(this, myArgs);
解释:第一行只是一项任务;第二行使用.split()
方法将您的字符串转换为字符数组,使用.map(...)
将其解析为整数数组;最后,第三行使用.apply()
方法将您的数组值应用为函数的参数,并按您的意愿调用encrypt(1, 2, 3, 4, 5);
。
答案 1 :(得分:1)
您应该尝试使用arguments
对象(它包含传递给函数的所有参数):
function callEncrypt() {
return this.apply(encrypt, arguments);
}
然后你可以根据需要使用尽可能多的参数:
callEncrypt(1);
callEncrypt(1, 2);
callEncrypt(1, 2, 3);
答案 2 :(得分:0)
var myArgs = "1,2,3,4,5"; // etc.
myArgs = myArgs . split(',') . map(parseInt);
encrypt(...myArgs);