Ответы пользователя по тегу Массивы
  • Как разбить массив на массив массивов в javascript?

    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);
    Ответ написан
    6 комментариев