2016-09-18 4 views
0

Ich habe ein Array von Strings oder Zahlen der Größe M (M> n). Ich möchte prüfen, ob irgendwelche n aufeinanderfolgenden Elemente gleich sind, wobei n zwischen 1-M variieren kann.Typescript Überprüfen Sie, ob "alle n aufeinanderfolgenden Elemente gleich sind" im Array M Größe

Nehmen wir zum Beispiel gehe ich davon unter Array haben, und ich möchte es überprüfen sind vier aufeinanderfolgende ‚5s oder zwei aufeinanderfolgenden‘ 3s vorhanden sind oder nicht:

{1,2,3,4,5 , 5,5,5,2,6,3,3,1}

Wie kann ich das erreichen?

P.S. Ich benutze auch Linq.JS, um linq Funktionen auf Array durchzuführen.

+0

Dies ist eine typische Aufgabe reduzieren. – Redu

+0

@Redu .. ** reduzieren ** mit dem externen Zähler? –

+0

Keine externen Zähler ... Ich werde versuchen, eine Antwort zu posten, sobald ich Zeit habe. – Redu

Antwort

2

Sie tun könnte wie folgt

var arr = [1,2,3,4,5,5,5,5,2,6,3,3,1], 
 
result = arr.reduce((p,c,i,a) => c !== a[i+1] ? (p[p.length-1][0] = c, p.concat([[0,1]])) 
 
               : (p[p.length-1][0] = c, p[p.length-1][1]++, p),[[true,1]]) 
 
      .slice(0,-1); 
 
console.log(result);

+0

Es gibt mir etwas ganz anderes. –

+0

@Pratik Gaikwad es gibt Ihnen ein Array mit aufeinanderfolgenden Wiederholung Anzahl der einzelnen Elemente. Ordnen Sie es so, wie Sie möchten. – Redu

+0

Möchte der vorherige Wert zwischengespeichert werden, kann die Operation 'p [p.length-1] [0]' zeitaufwendig werden, wenn das Array viele Tausende groß ist. Punkte für die Kürze. –

Verwandte Themen