2016-04-19 5 views
-2

Ich stieß auf diese Frage in einer Codierung Herausforderung. Es gibt Stapelüberlauffragen zum Lösen eines ähnlichen Problems unter Verwendung von Objekten. Die Drehung in dieser Frage besteht darin, nur die Elemente zu zählen, die benachbart zueinander sind. Es wäre schön, eine Lösung dafür zu kennen.wie Pack Array-Funktion in Javascript lösen

pack([5,5,5,7,7,2,4,7]); 

output should be [5:3, 7:2, 2:1, 4:1, 7:1] 



var dupobject = function(arr){ 
    var nodup = []; 
    var store = {}; 
    var prev = []; 

    for(var i = 0; i < arr.length; i++){ 

    if(arr[i] == prev && store[arr[i]]){ 
     store[arr[i]] += 1; 
     console.log(arr[i]); 
    }else{ 
     store[arr[i]] = 1; 
    } 

    prev = arr[i]; 

    } 

    console.log(store); 
} 


dupobject([ 5,5,5,7,7,2,4,7]); 
+0

Dies ist eine wirklich grundlegende Frage Codierung. Hast du versucht, es selbst zu lösen? –

+0

Die Ausgabe, die ich bekomme, ist [5: 3, 7: 1, 2: 1, 4: 1], will nicht, dass 7: 2 überschrieben wird – neelmeg

Antwort

0

Da niemand gepostet Antwort für sie, hier gehen wir!

https://plnkr.co/edit/lxKRODtzIfCIgfcKS11F?p=options

function aggregate(arr){ 
    var aggregatedArray = []; 

    var consecutiveCount = 1; 
    for(var i=0;i<=arr.length;i++){ 
    if(i>0){ 

     if(arr[i-1] === arr[i] && i !== (arr.length)){ 
     consecutiveCount++; 
     }else{ 
     var obj = {}; 
     obj[arr[i-1]] = consecutiveCount; 
     aggregatedArray.push(obj); 
     consecutiveCount = 1; 
     } 
    } 
    } 
    return aggregatedArray; 
}