Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 23.04.2015, 12:18
Аватар для Armen
Кандидат Javascript-наук
Отправить личное сообщение для Armen Посмотреть профиль Найти все сообщения от Armen
 
Регистрация: 28.06.2009
Сообщений: 120

Как найти совпадения в массиве и добавить их в двумерный массив?
Здравствуйте.
Ищу совпадения в массиве:
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]]
Спасибо за помощь и ваше время.
Ответить с цитированием
  #2 (permalink)  
Старый 23.04.2015, 13:01
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,112

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>
Ответить с цитированием
  #3 (permalink)  
Старый 23.04.2015, 13:08
Аватар для Armen
Кандидат Javascript-наук
Отправить личное сообщение для Armen Посмотреть профиль Найти все сообщения от Armen
 
Регистрация: 28.06.2009
Сообщений: 120

Сообщение от рони Посмотреть сообщение
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>
А есть вариант без создания объекта?
Ответить с цитированием
  #4 (permalink)  
Старый 23.04.2015, 13:14
Аватар для Armen
Кандидат Javascript-наук
Отправить личное сообщение для Armen Посмотреть профиль Найти все сообщения от Armen
 
Регистрация: 28.06.2009
Сообщений: 120

Сообщение от рони Посмотреть сообщение
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>
Уже не нужно! Спасибо, так подошло!
Ответить с цитированием
  #5 (permalink)  
Старый 23.04.2015, 13:27
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,112

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>
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как найти и посчитать одинаковые изображения в массиве? Michael_isr Общие вопросы Javascript 2 05.08.2014 16:55
Как в шаблоне диррективы узнать массив это или строка? delias Angular.js 1 18.03.2014 07:33
Как вы относитесь к наркоманам? Maxmaxmaximus7 Оффтопик 7 05.02.2014 13:29
Массив как часть параметра diprom Javascript под браузер 3 21.09.2011 00:08
Как лучше сделать глобальный массив skyfish AJAX и COMET 4 17.02.2009 18:05