我目前需要将一组函数参数定义为逗号分隔的字符串,并在以后传入。
我希望我的代码功能如下。
function bar() {
console.log("My name is " + arguments[0].name + " and my species is " arguments[0].species);
console.log("String 1: " + arguments[1]);
console.log("String 2: " + arguments[2]);
}
function foo() {
var args = "{name: 'Dean Brunt', species: 'Human'}, 'A string', 'Some other input string, oh yes'";
bar.apply(null, args);
}
我希望这能产生输出到控制台:
My name is Dean Brunt and my species is Human
String 1: A string
String 2: Some other input string, oh yes
然而,这不起作用,因为Function.prototype.apply()
将数组作为其“'第二个论点。虽然,我已经尝试将args字符串转换为数组,但由于这会产生非平凡的正则表达式分裂,我一直在努力解决这个问题,而且我的尝试也毫无结果。
任何人都可以帮我定义一个合适的正则表达式对象,我可以用它来进行拆分,或者提出一个可以产生相同结果的替代方法。
非常感谢。
答案 0 :(得分:1)
它不漂亮,但您可以使用eval
:
function bar() {
console.log("My name is " + arguments[0].name + " and my species is " + arguments[0].species);
console.log("String 1: " + arguments[1]);
console.log("String 2: " + arguments[2]);
}
function foo() {
var args = "{name: 'Dean Brunt', species: 'Human'}, 'A string', 'Some other input string, oh yes'";
bar.apply(null, eval('[' + args + ']'));
}
foo();
答案 1 :(得分:0)
您可以使用eval()。 写一个正则表达式会非常繁琐。
function stringToArgs(str){
return eval(`(function(){return arguments;})(${str})`);
}
function bar(arguments) {
console.log("My name is " + arguments[0].name + " and my species is " +arguments[0].species);
console.log("String 1: " + arguments[1]);
console.log("String 2: " + arguments[2]);
}
function foo() {
var args = "{name: 'Dean Brunt', species: 'Human'}, 'A string', 'Some other input string, oh yes'";
bar(stringToArgs(args));
}
foo();
答案 2 :(得分:0)
这不是万无一失的,但这是一个开始。
您应首先将数据格式化为看起来像 JSON,然后解析它。这是最简单的方法。
class Animal {
constructor(name, species) {
this.name = name;
this.species = species;
}
toString() {
return `My name is ${this.name} and my species is ${this.species}.`;
}
}
function print() {
console.log([].slice.apply(arguments).join(' '));
}
function printEach() {
[].slice.apply(arguments).forEach(arg => console.log(arg));
}
print(new Animal('Dean Brunt', 'Human'), 'A string', 'Some other input string, oh yes');
这有点超出您所要求的范围,但如果您可以实际修改数据,这是最好的方法。
file0 = request.FILES.get('file')
buffer0 = file0.read()
print hashlib.md5(buffer0).hexdigest() //9f982242d24ab97a7254edd7e28e3921