2015-04-27 92 views
0

我試圖創建一個的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) 

感謝所有的幫手!

+0

會發生什麼情況?你有錯誤嗎? 「不起作用」是什麼意思? – Transcendence

+0

請注意,您[不應該在數組中使用'in'枚舉](http://stackoverflow.com/q/500504/1048572) – Bergi

回答

1

那麼,參數列表是沒有結構,可以用純js表示。要通過被編碼爲一個字符串多個函數的參數,你不得不使用

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

或更好

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

但是,你putPage功能甚至不指望多個參數,但單個陣列,所以你只需要使用

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

但是我會推薦給存儲在您tmpArr正確的JSON字符串或實際陣列在第一PL王牌,就像

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] 
]; 
+0

謝謝你的回答,它工作。 – webin

相關問題