Als ich ein WeChat-Applet-Projekt schrieb, gab es darin eine Funktion zur „Städteauswahl“. Der Autor verwendete die Komponente Da ich die Konvertierung des JS-Variablentyps damals nicht verstand, schrieb ich einige Urteilszeilen in den Code: (Dies ist streng) let val_one=Typ von this.data.pIndex=="Nummer"?[this.daya.pIndex]:this.data.pIndex (: Die Zugriffselemente im Projekt sind dynamisch! Der Grund hierfür ist, dass der Index der Auswahl des Benutzers dynamisch folgen und zur Anzeige an Aber vorher müssen wir eine Entscheidung treffen – da es sich bei einigen Gebieten um Provinzstädte oder -gemeinden handelt, müssen wir Benutzer vor „dummen Aktionen“ wie plötzlichem Anfahren oder Abfahren schützen. Zu diesem Zeitpunkt meldet das WeChat-Applet einen Fehler, dass die entsprechenden Daten nicht gefunden werden können: let Länge = placeArray[val_one].sub.length wenn(Wert[0]>=Länge){ val=[Länge-1] }sonst wenn(Wert[0]<0){ Wert=[0] } Als ich später zurückging, um den Code für dieses Projekt zu optimieren, stellte ich fest, dass dies (das Konvertieren von Arrays in Zahlen beim Erzwingen und das Konvertieren von Zahlen in Arrays beim Geben von Feedback) eigentlich unnötig war: JavaScript scheint eine eigene "einzigartige" Methode zur Datenverarbeitung zu haben, aber der Autor hat noch keine relevanten Informationen gefunden ~~ So ermitteln Sie, ob ein Wert als Array-Index verwendet werden kann Eines ist jedoch sicher: Die Zuweisung von Werten zu ganzzahligen Eigenschaftsschlüsseln ist ein Sonderfall von Arrays, da sie anders behandelt werden als nicht ganzzahlige Schlüssel. Um festzustellen, ob eine Eigenschaft als Array-Index verwendet werden kann, hat der Autor eine Passage im ES6-Spezifikationsdokument gefunden:
Dieser Vorgang kann mit JS wie folgt implementiert werden: Funktion toUint32(Wert){ returniere Math.floor(Math.abs(Zahl(Wert))) % Math.pow(2,32); } Funktion isArrayIndex(Schlüssel){ let numericKey = toUint32(Schlüssel); return String(numerischerSchlüssel) == Schlüssel && numerischerSchlüssel < (Math.pow(2,32)-1); } Die Funktion Mit dieser Grundlage können wir das Verhalten von Funktion createArray(Länge=0){ gib einen neuen Proxy zurück ({Länge},{ setze(TrapZiel,Schlüssel,Wert){ let currentLength=Reflect.get(trapTarget,"Länge"); wenn(istArrayIndex(Schlüssel)){ let numericKey = Nummer(Schlüssel); wenn(numerischerSchlüssel >= aktuelleLänge){ Reflect.set(trapTarget,"Länge",numerischerSchlüssel+1); } }sonst wenn(Schlüssel === "Länge"){ wenn(Wert < aktuelleLänge){ für(let index=currentLength-1;index>=value;index--){ Reflect.deleteProperty(trapTarget,index); } } } // Unabhängig vom Typ des Schlüssels muss dieser Code ausgeführt werden return Reflect.set(trapTarget,key,value); } }); } Experimentieren Sie damit: Zusammenfassen Dies ist das Ende dieses Artikels mit der detaillierten Erklärung von Datentypproblemen bei der JS-Array-Indexerkennung. Weitere Informationen zu Datentypen bei der JS-Array-Indexerkennung finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen! Das könnte Sie auch interessieren:
|
<<: Zusammenfassung von 11 erstaunlichen Best Practices für die Refaktorierung von JavaScript-Code
>>: So verwenden Sie die Lotteriekomponente des WeChat Mini-Programms
mycli MyCLI ist eine Befehlszeilenschnittstelle f...
Dieser Artikel veranschaulicht anhand von Beispie...
1. Ich habe ein VPS- und CentOS-System gekauft un...
Inhaltsverzeichnis 1. Rendern 2. Daten binden und...
CSS (Cascading Style Sheet) wird zum Verschönern ...
Inhaltsverzeichnis Vorwort Was ist VirtualDOM? Gr...
Vorwort Bei der tatsächlichen Verwendung der Date...
Aus verschiedenen Gründen müssen Sie manchmal den...
Zu Beginn dieses Artikels möchte ich die Fehler in...
1. Das in diesem Artikel implementierte Effektdia...
Domänenübergreifende Lösungen jsonp (get simulier...
Portzuordnung Wenn vor dem Start des Docker-Conta...
Problembeschreibung Vor kurzem gab es einen MySQL...
Inhaltsverzeichnis 1. Theorie SERIALISIERBAR WIED...
Ergebnis: html <nav id="nav-1"> &...