2015-07-03 83 views
-2

比方說,我有這樣的數組:如何將數組分成包含相同值的JavaScript數組?

[1, 1, 2, 1, 3, 3, 3]; 

我怎麼能這個數組分成這個子陣:

[1, 1], [2], [1], [3, 3, 3]; 

第二個例子: 當它在陣列2個相同的元素,他們應該返回[1, 1];

[1, 1] -> [1, 1] 
+2

你應該告訴我們你的努力來解決這個你自己。 – Oka

+3

歡迎來到Stackoverflow。請爲這樣的簡單問題做一些研究。 –

+0

顯示你的嘗試。 –

回答

2

使用reduce你也可以做,(我覺得這更易讀)

var arr = [1, 1, 2, 1, 3, 3, 3], 
 
    arrsplit = arr.reduce(function (acc, val) { 
 
     var inner; 
 

 
     if (acc.previous !== val) { 
 
      inner = []; 
 
     } else { 
 
      inner = acc.newArray.pop(); 
 
     } 
 

 
     inner.push(val); 
 
     acc.previous = val; 
 
     acc.newArray.push(inner); 
 

 
     return acc; 
 
    }, { 
 
     previous: null, 
 
     newArray: [] 
 
    }); 
 

 
document.getElementById('out').textContent = JSON.stringify(arrsplit.newArray);
<pre id="out"></pre>

+0

非常感謝!我很感激它:> –

相關問題