Как найти совпадения в массиве и добавить их в двумерный массив?
Здравствуйте.
Ищу совпадения в массиве: 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]] Спасибо за помощь и ваше время. |
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,
:-? :-? <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. |