2017-04-08 60 views
-1

我需要使用相同的函數對多個數組進行混洗,以便將每個句子中的單詞隨機化。混洗多個數組Javascript

使用HTML的話,我需要一個按鈕,開始洗牌,與每個例如間換行輸出的句子:

var array1 = ["The, "Man", "and", "his", "dog"]; 
var array2 = ["went", "for", "a", "walk", "outside"]; 

上的按鈕「洗牌」的點擊IM試圖讓輸出顯示器上的獨立線路是這樣的:

人與狗他對

了外面走走去

感謝

+0

http://stackoverflow.com/questions/6274339/how-can -i-shuffle-an-array – Mihai

+0

這是一個問答網站。這裏沒有任何問題,也沒有提到你試圖完成你的目標的問題。所有你提供的是一個目標,這也不是一個免費的代碼寫作服務 – charlietfl

+0

昨天你已經問過同樣的問題(僅用於不同的數組內容):[試圖用javascript來洗牌多個數組,但是以同樣的方式?] http://stackoverflow.com/questions/43281492/trying-to-shuffle-multiple-arrays-in-javascript-but-in-the-same-way) – Andreas

回答

2

您應該使用mapsort方法。

首先,您可以使用Math.random方法爲陣列中的每個項目生成一個隨機數。下一步是按此generated號碼排序數組。

最後一步是用數組的項目創建句子,使用join方法。

var array1 = ["The", "Man", "and", "his", "dog"]; 
 
console.log(array1.map(function(n){ 
 
       return [Math.random(), n]; 
 
      }).sort().map(function(item){ 
 
       return item[1] ; 
 
      }).join(' '));

0

這應該爲你做它....

["The", "Man", "and", "his", "dog"] 
 
     .map(w => { return { seq: Math.random(), word: w } }) 
 
     .sort((a,b) => a.seq<b.seq?-1:1) 
 
      .map(w => w.word)