2015-07-03 84 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

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

相关问题