2016-05-15 65 views
2

根據W3Schools的,連接()函數定義爲JavaScript加入多個數組混淆?

的join()方法連接一個數組爲一個字符串的元素,並返回字符串。 的元件將由指定的分隔符分隔。默認分隔符是逗號(,)。「但是,如果我嘗試使用join()函數將兩個數組連接在一起,它會產生一個我似乎無法理解的輸出。任何人都可以解釋這個輸出嗎? 下面是示例代碼:

<body> 

<p>Click the button to join the array elements into a string.</p> 

<button onclick="myFunction()">Try it</button> 

<p id="demo"></p> 

<script> 
function myFunction() { 
    var fruits = ["Banana", "Orange", "Apple", "Mango"]; 
    var food = ["Chicken","Fish","Lamb","Prawns"]; 
    var x = document.getElementById("demo"); 
    x.innerHTML = fruits.join(food); 
} 
</script> 
</body> 

的jsfiddlehttps://jsfiddle.net/gf84ee9y/

回答

7

這是因爲要加入一個陣列,並且在另一個陣列穿過作爲隔膜:

fruits.join(food); 

的輸出是實際上預料到,對於每個'水果',你把整個食物排列在它們之間。

如果你想兩個數組合並,使用concat

var newArray = fruits.concat(food); 

現在,您可以加入newArray,它會只有一個來自每個陣列的每個元素的副本。

Working example with concat

+1

這是正確的答案,加入需要一個字符串作爲參數使用像「分隔符」(空格)或「|」 ,但是傳遞數組本身違反了連接方法的目的。 –