@Bounti

Как разбить массив на массив массивов в javascript?

Здравствуйте, у меня массив.
a = [1, 2, 2, 3, 4, 4, 5, 6, 6, 7]
мне необходимо разбить его на подмассивы, состоящие из одинаковых элементов.
Необходимый результат:
[[1], [2, 2], [3], [4, 4], [5], [6, 6] , [7]]

Как это можно сделать?
  • Вопрос задан
  • 8156 просмотров
Решения вопроса 1
sidan
@sidan
php-developer
var a = [1, 2, 2, 3, 4, 4, 5, 6, 6, 7];
var d = {};

a.forEach(function(value){
   if(typeof d[value] == 'undefined')
       d[value] = [];

   d[value].push(value);
});

var c = Object.keys(d).map(function(key){
    return d[key];
});

console.log(c);


Вариант с reduce, учитывает только идущие друг за другом совпадения:
var rrr = [1,2,2,3,4,5,6,6,7];

var c = rrr.reduce(function(a,b){
    if(!a.join)
        a = [a];

    var last = a[a.length - 1];

    //если последний элемент не массив и равен текущему
    if(!last.join && last == b) {
        a[a.length - 1] = [last, b]
    }
    //если последние элемент массив и первый элемент его равен текущему
    else if(last.join && last[0] == b) {
        a[a.length - 1].push(b)
    } else {
        a.push(b);
    }

    return a;
});

console.log(c);
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы