Node.js如何将包含参数的字符串或数组作为函数参数传递?

时间:2015-04-27 17:57:16

标签: javascript node.js

我正在尝试在Node.JS中创建一个代码,该代码将获取一个包含值的数组,并将其传递给函数但不会成功..

这是我的代码:

var tmpArr = [];
tmpArr.push('"2015-04-27", "12345", "http://thispage.com/2.html", 1, 1, 0, 0');
tmpArr.push('"2015-04-25", "34567", "http://thispage.com/2.html", 0, 0, 1, 1');
tmpArr.push('"2015-04-25", "34567", "http://thispage.com/2.html", 0, 0, 1, 1');

function reportPages(arr) {
    for (i in arr){
        putPage(arr[i]); //this did not work
    }
}

function reportPages(arr) {
    for (i in arr){
        putPage(eval(arr[i])); //this did not work eater 
    }
}

reportPages(tmpArr) 

感谢所有帮助者!

1 个答案:

答案 0 :(得分:1)

嗯,参数列表不是可以用普通j表示的结构。要传递编码为字符串的多个函数参数,您必须使用

eval('putPage('+arr[i]+')')

或更好

putPage.apply(null, JSON.parse('['+arr[i]+']'));

但是,您的putPage函数甚至不需要多个参数,只需要一个数组,因此您只需使用

putPage(JSON.parse('['+arr[i]+']'));

我建议首先在tmpArr中存储正确的JSON字符串或真实数组,例如

var tmpArr = [
    ["2015-04-27", "12345", "http://thispage.com/2.html", 1, 1, 0, 0],
    ["2015-04-25", "34567", "http://thispage.com/2.html", 0, 0, 1, 1],
    ["2015-04-25", "34567", "http://thispage.com/2.html", 0, 0, 1, 1]
];