Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Как найти совпадения в массиве и добавить их в двумерный массив? (https://javascript.ru/forum/misc/55330-kak-najjti-sovpadeniya-v-massive-i-dobavit-ikh-v-dvumernyjj-massiv.html)

Armen 23.04.2015 12:18

Как найти совпадения в массиве и добавить их в двумерный массив?
 
Здравствуйте.
Ищу совпадения в массиве:
var arr = [0, 0, 4, 8, 8, 10, 45, 0, 23, 3 ,8];
var result = arr.filter(function (item, index, array) {    
  return array.indexOf(item) !== array.lastIndexOf(item); // [0, 0, 8, 8, 0, 8]
});

Вопрос: как сделать так, чтоб для отдельных совпадений, создавался свой массив? То есть, конечный результат должен быть такой: [[0, 0, 0], [8, 8, 8]]
Спасибо за помощь и ваше время.

рони 23.04.2015 13:01

Armen,
:-?
<script>
var arr = [0, 0, 4, 8, 8, 10, 45, 0, 23, 3, 8],
       result = [],
       temp = {};
   arr.forEach(function(item, index, array) {
       temp[item] ? (temp[item].push(item)) : (temp[item] = [item]);

   });
   Object.keys(temp).forEach(function(key) {

       temp[key].length > 1 && result.push(temp[key])

   });
   document.write(JSON.stringify(result))
</script>

Armen 23.04.2015 13:08

Цитата:

Сообщение от рони (Сообщение 367889)
Armen,
:-?
<script>
var arr = [0, 0, 4, 8, 8, 10, 45, 0, 23, 3, 8],
       result = [],
       temp = {};
   arr.forEach(function(item, index, array) {
       temp[item] ? (temp[item].push(item)) : (temp[item] = [item]);

   });
   Object.keys(temp).forEach(function(key) {

       temp[key].length > 1 && result.push(temp[key])

   });
   document.write(JSON.stringify(result))
</script>

А есть вариант без создания объекта?

Armen 23.04.2015 13:14

Цитата:

Сообщение от рони (Сообщение 367889)
Armen,
:-?
<script>
var arr = [0, 0, 4, 8, 8, 10, 45, 0, 23, 3, 8],
       result = [],
       temp = {};
   arr.forEach(function(item, index, array) {
       temp[item] ? (temp[item].push(item)) : (temp[item] = [item]);

   });
   Object.keys(temp).forEach(function(key) {

       temp[key].length > 1 && result.push(temp[key])

   });
   document.write(JSON.stringify(result))
</script>

Уже не нужно! Спасибо, так подошло!

рони 23.04.2015 13:27

Armen,
:-? :-?
<script>
var arr = [0, 0, 4, 8, 8, 10, 45, 0, 23, 3, 8];
   var result = arr.filter(function(item, index, array) {
       return array.indexOf(item) !== array.lastIndexOf(item)
   }).sort(function(a, b) {
       return b - a
   }).reduce(function(arr, item) {
       arr[0] && arr[0][0] == item ? arr[0].push(item) : arr.unshift([item])
       return arr;
   }, []);
document.write(JSON.stringify(result))
</script>


Часовой пояс GMT +3, время: 12:23.