2016-11-20 3 views
0

Ich habe festgestellt, dass in lodash die Array-Methoden auch auf Strings arbeiten. Zum Beispiel:Lodash - Array-Methoden auf Strings

> _.last('abc') 
'c' 

> _.indexOf('abc', 'x') 
-1 

Ist das ein Standardverhalten, und kann dies auf verlassen? Die Dokumentation sagt nichts darüber aus, soweit ich weiß.

Bitte beachten Sie, dass die oben genannten Methoden nur Beispiele sind. Was ich eher wissen möchte ist, ob lodash erwartet, dass seine Array-Methoden für Strings verwendet werden. Ich muss Produktionscode schreiben und kann mich nicht auf etwas verlassen, das funktioniert, aber die Standarddokumente haben das nicht erwähnt oder bestätigt oder garantiert.

Antwort

3

Sie können eine String als im Wesentlichen ein Array von Zeichen betrachten. Sie haben bestimmte Eigenschaften und Funktionen, die Sie in einem Array finden würden, z. B. .length und .indexOf().

Basierend auf der Lodash-Quelle für .last und .indexOf, verwenden sie die .length-Eigenschaft, um das letzte Zeichen oder den Index eines Zeichens innerhalb eines Arrays zu bestimmen.

Diese Implementierungen können zwar in den meisten Szenarien aufgrund ihrer Array-ähnlichen Art mit Strings arbeiten, funktionieren aber nicht, da lodash die Klammernotation (str[0]) verwendet, um das letzte Zeichen/Index eines Elements mit einem Array zu finden . Dies ist not universally supported z.B. für IE7, weshalb die charAt Methode existiert für den Zugriff auf ein Zeichen in einem bestimmten Index für eine Zeichenfolge.

Sie können nativ diese beiden Dinge tun:

var str = 'mystring'; 
str.charAt(str.length - 1); // 'g' 

var str = 'mystring'; 
str.indexOf('y') // 1`