2016-08-05 2 views
3

In meinem TypeScript-Projekt möchte ich die Werte in einem Array mit dem nächsten Wert vergleichen. Wenn ich das in JavaScript tue ich würde so etwas tun:Identifizieren des nächsten Elements der aktuellen Schleife für die Iteration Typescript

//JS 
for (var i = 0; i < codeBlocks.length; i++) { 
    var j = i + 1; 
    if (codeBlocks[i] > codeBlocks[j]) {return true;} 
    return false; 
} 

Aber ich mag das Typoskript für Syntax, da es viel mehr lesbar ist.

Gibt es eine Möglichkeit, den "nächsten Iteration" -Wert im Typoskript für ... der Schleife zu beschreiben?

+0

Warum versuchst du es nicht (codeBlocks [i]> codeBlocks [i + 1]) an der Stelle von if (codeBlocks [i]> codeBlocks [j]) –

+0

@BunkerBoy Ich versuche nur, das in TypeScript zu implementieren, Das Beispiel diente lediglich dazu, die Frage zu erläutern. –

Antwort

0

Sie können dieselbe Syntax for (var i = 0; i < codeBlocks.length; i++) in TypeScript verwenden. Aber dein Zyklus wird nur einmal ausgeführt.

+0

Was meinen Sie mit "Ihr Zyklus läuft nur einmal"? –

+0

@torazaburo im ersten Durchlauf des Zyklus es immer von der Funktion zurück. Es bedeutet, dass es Zyklus beim ersten Lauf bricht – Maxx

0

Nein. Das ist nicht der Zweck von für .. von. Sie können mehr darüber lesen on MDN.

Sie müssen die for (var i = 0; i < codeBlocks.length; i++) Syntax dafür verwenden.

+0

Dies ist [Typoskript] (http://www.typescriptlang.org/docs/handbook/iterators-and-generators.html) und das ist, was es ist. –

+1

@GeorgeEdwards for..of ist keine maschinenschriftspezifische Syntax. Es ist Teil des ES6-Standards. Es soll Ihnen jedoch keinen indizierten Zugriff auf das Array geben. Sie haben das regelmäßige for oder forEach für das (wie JBaby gepostet). – toskv

+0

Ja, aber ich ziele auf es5 und TypeScript kompiliert für ... von was du gepostet hast, also sagt "Das ist nicht der Zweck" macht keinen Sinn –

3

können Sie verwenden entries()

for (var [index, codeBlock] of codeBlocks.entries()) 
{ 
    // your code you can use index 
} 

DEMO

Beispiel Snippet:

var test = ['a','b','c'] 
for (var [index, cur] of test.entries()) 
{ 
    var j = index + 1; 
    console.log("Current value: "+cur+" Next value: "+test[j]) 
} 
+0

Wie kann er nächsten Wert im Körper des Zyklus bekommen? – Maxx

+0

@Maxx überprüfen Sie bitte aktualisierte Antwort. – Manwal

+0

ich sehe. Nun, ich denke, es ist wierd ein wenig – Maxx

1

Wenn Sie den Index eines Elements, verwenden Sie die foreach Funktion:

codeBlocks.forEach((item, index) => { 
    console.log(item); // item in the array 
    console.log(index); // item index in the array 
}); 
+1

Umm, er hat schon den index in der for-loop gepostet. –

+0

Ja, aber seine Frage lautete: " Gibt es eine Möglichkeit, den" nächsten Iterationswert "im Typoskript für ... der Schleife zu beschreiben?" – JBaby

0

Hier zu reduzieren, ist ein Generator, die Paare von Elementen erzeugt:

function *pairs(array) { 
 
    let prev = array.shift(); 
 

 
    for (v of array) { 
 
    yield [prev, v]; 
 
    prev = v; 
 
    } 
 
} 
 

 
for (let pair of pairs([1,2,3])) { console.log(pair); }

Wenn Sie wollen auch ein letztes Paar mit dem letzten Wert erzeugen und undefiniert, dann fügen Sie am Ende der Funktion einfach eine yield [prev, undefined]; hinzu.

Verwandte Themen