2017-06-20 33 views
-2

我是新來的Javascript和我試圖將一個字符串數組作爲參數傳遞給一個同步函數。在函數內部數組合成一個字符串,我不知道爲什麼。輸入的結構使我無法改變它。JavaScript的 - 數組參數成爲連接

module.exports = { 
    myFunc: function (input) { 
     console.log(input); //"string1string2,string3" 

     var type = input[0]; 
     var val = input[1][0]; 
     console.log('type: ' + type + ', val: ' + val) 
    } 
} 


myFunc(["string1", ["string2", "string3"]]); //'type: s, val: t' 

帕拉姆input得到與所有三個字符串連接在一起,成爲string1string2,string3,並打印出'type: s, val: t'

+0

「完整」是什麼意思?不要在'input'上連接 - 保持不變!只要扁平化並加入數組,然後返回。 'input'仍然是原始數組。 – Li357

+3

您是否遺漏了一些代碼?假設錯字只是複製它(在'string2'之後),你的函數不會返回任何東西。它唯一要做的就是'console.log('type:string1,val:string2')'。 – samanime

+0

你在string2中缺少雙引號 – Isac

回答

0

您的JavaScript似乎是工作的罰款,你可以在這裏看到:

var myFunc = function (input) { 
 
    var type = input[0]; 
 
    var val = input[1][0]; 
 
    console.log('type: ' + type + ', val: ' + val) 
 
} 
 

 
myFunc(["string1", ["string2", "string3"]]); //'type: s, val: t'

,我不得不刪除模塊,所以我可以在片段

+0

這不是我的代碼如何在我的nodejs程序中工作。它打印出''type:s,val:t''這就是爲什麼我問這個問題 – McLovin

+0

@McLovin然後你提供的代碼示例和它會做的事情之間有些不對。 Isac顯示它完全符合我在之前的評論中提到的內容。 – samanime

+0

我認爲你必須發佈更多的代碼,以便我們可以幫助你,你發佈的功能似乎很好。 – Isac

0

的代碼運行你給的例子並沒有給出你聲稱的輸出。

不過,我懷疑你可能有這樣的事情:

const myFunc = function (input) { 
 
    var type = input[0]; 
 
    var val = input[1][0]; 
 
    console.log('type: ' + type + ', val: ' + val) 
 
} 
 

 

 
myFunc("string1", ["string2", "string3"]); //'type: s, val: t'

注意,我刪除了您例如外陣列。如果你打電話給myFunc("string1"),你會得到你聲稱得到的輸出。

我懷疑你缺少你的函數期望的數組的一個級別。

發生了什麼反而是它被作爲一個字符串而不是數組來訪問。

const str = 'abcdef'; 
 
console.log(str[0]); 
 
console.log(str[1]); 
 
console.log(str[1][0]); 
 
console.log(str[1][1]); 
 
console.log(str[1][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0]);

注意如何使用數組的語法訪問字符串的單個字符。但是,與其他語言不同,在JavaScript中,字符串的單個字符仍然是一個字符串,因此您可以無限次地調用[0],並且仍然可以返回該字符。

+0

我很感謝你的回答。所以如果這在Javascript中是不可能的,那麼肯定會有一些可怕的事情發生。輸入函數後,我添加了輸入的console.log。我正在執行這個確實是如何寫在我的問題與二維數組。 – McLovin

+0

要麼你不這麼認爲,或者你有某種時髦的轉譯問題。你是用純JavaScript編寫的嗎?你是否在使用Babel,TypeScript,Coffee等東西? – samanime

+0

如果它不是一個時髦的翻譯,我幾乎可以保證你傳遞給'myFunc()'的值已經混亂並且連接在一起。 – samanime