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