JavaScript-Typsystem Array-Objektstudiennotizen_Javascript-Kenntnisse
Ein Array ist eine Reihe von Werten, die in der richtigen Reihenfolge angeordnet sind. Im Gegensatz dazu sind die Attributnamen von Objekten ungeordnet. Im Wesentlichen verwenden Arrays Zahlen als Suchschlüssel, während Objekte benutzerdefinierte Eigenschaftsnamen haben. JavaScript verfügt nicht über ein echtes assoziatives Array, aber Objekte können verwendet werden, um zugehörige Funktionen zu implementieren
Array() ist nur ein spezieller Typ von Object(), das heißt, eine Array()-Instanz ist im Grunde eine Object()-Instanz mit einigen zusätzlichen Funktionen. Arrays können jede Art von Werten enthalten, diese Werte können jederzeit aktualisiert oder gelöscht werden und die Größe des Arrays wird dynamisch angepasst
1. Array-Erstellung
Wie die meisten Objekte in Javascript können Array-Objekte mithilfe des new-Operators in Verbindung mit dem Array()-Konstruktor oder mithilfe der Literalsyntax
erstellt werden【1】Mit dem Array-Konstruktor (bei Verwendung des Array-Konstruktors können Sie auch den New-Operator weglassen) können Sie den Wert der Array-Instanz durch Kommas als Parameter getrennt an den Konstruktor übergeben und Array() Der Konstruktor kann 4294967295 (ungefähr 4,3 Milliarden) Parameter empfangen
Wenn nur ein Parameter vorhanden ist: Wenn ein Wert übergeben wird, wird dieser zum Festlegen der Länge des Arrays verwendet. Wenn ein anderer Parametertyp übergeben wird, wird ein Array mit nur einem Element erstellt, das diesen Wert enthält.
var colors; console.log(colors = new Array(),colors.length);//[] 0 console.log(colors = new Array('red','blue','green'),colors.length);//['red','blue','green'] 3 console.log(colors = new Array(20),colors.length);//[] 20 console.log(colors = new Array('red'),colors.length);//['red'] 1
var foo = new Array(1,2,3); var bar = new Array(100); console.log(foo[0],foo[2]);//1 3 console.log(bar[0],bar.length);//undefined 100
【2】Array-Literaldarstellung verwenden
var colors = ['red','blue','green']; var colors = []; //Array构造函数 var myArray1 = new Array('blue','green','orange','red'); console.log(myArray1);//['blue','green','orange','red'] //数组字面量表示法 var myArray2 = ['blue','green','orange','red']; console.log(myArray2);//['blue','green','orange','red'] var colors = [1,2,]; //在IE8及以前中会包含一个三个项目,且每个项目为1、2和undefined的数组。在其他浏览器中为只包含1和2的数组 var colors = [,,,]; //在IE8及以前会创建4项的数组,而在其他浏览器中会创建3项的数组
2. Array-Operationen
Verwenden Sie beim Lesen und Festlegen von Array-Werten eckige Klammern und geben Sie den auf 0 basierenden numerischen Index des entsprechenden Werts an
Das Längenattribut des Arrays stellt die Anzahl der Werte im Array dar, und der numerische Index des Arrays beginnt bei 0. Durch Festlegen des Längenattributs des Arrays können Sie kann Elemente vom Ende des Arrays entfernen oder neue Elemente zum Array hinzufügen. Wenn die Länge höher eingestellt ist als die tatsächliche Anzahl der Werte im Array, werden undefinierte Werte zum Array hinzugefügt. Wenn die Anzahl der Längenwerte kleiner ist als die Anzahl der Werte im Array , Werte im Array können gelöscht werden
var myArray = ['blue','green','orange','red']; console.log(myArray.length);//4 myArray.length = 99; console.log(myArray.length);//99 myArray.length = 1; console.log(myArray[1]);//undefined console.log(myArray);//['blue'] var colors = ['red','blue','green']; colors.length = 2; alert(colors[2]);//undefined colors.length = 4; alert(colors[3]);//undefined
Wenn ein Wert an einer Position platziert wird, die die Größe des Arrays überschreitet, berechnet das Array seinen Längenwert neu, dh der Längenwert entspricht dem Index des letzten Elements plus 1 und Javascript verwendet undefiniert Werte zum Füllen aller Elemente vor dem aktuellen Index
var myArray = []; myArray[50] = 'blue'; console.log(myArray.length);//51 var colors = ['red','blue','green']; colors[99] = 'black'; console.log(colors.length);//100
[Tipps] Verwenden Sie das Längenattribut, um einfach neue Elemente am Ende des Arrays hinzuzufügen
colors[colors.length] = 'black';
3. Vererbungsmethode
toString()
Gibt eine durch Kommas getrennte Zeichenfolge zurück, die aus der Zeichenfolgenform jedes Werts im Array
verkettet istvalueof()
Was zurückgegeben wird, ist immer noch ein Array
var colors = ['red','blue','green']; console.log(colors.valueOf());//['red','blue','green'] alert(colors.valueOf());//'red,blue,green' alert(colors.toString());//'red,blue,green' alert(colors);//'red,blue,green'[注意]由于alert()要接收字符串参数,它会在后台调用toString()方法,会得到与toString()方法相同的结果
toLocaleString()
Beim Aufrufen dieser Methode ruft der Wert jedes Elements im Array die toLocaleString()-Methode
aufvar person1 = { toLocaleString: function(){ return 'Nikolaos'; }, toString: function(){ return 'Nicholas'; } }; var person2 = { toLocaleString: function(){ return 'Grigorios'; }, toString: function(){ return 'Greg'; } }; var people = [person1,person2]; alert(people);//Nicholas,Greg alert(people.toString());//Nicholas,Greg alert(people.toLocaleString());//Nikolaos,Grigorios
4. Instanzmethoden
Array-Konvertierung
join()
Die vom Array geerbten Methoden toLocaleString(), toString() und valueOf() geben die Array-Elemente standardmäßig in Form von durch Kommas getrennten Zeichen zurück; die Methode join() kann verschiedene Trennzeichen verwenden, um die Zeichenfolge zu erstellen . empfängt die Methode „join()“ nur einen Parameter, eine Zeichenfolge, die als Trennzeichen verwendet wird, und gibt dann eine Zeichenfolge zurück, die alle Array-Elemente enthält. Wenn kein Wert an die Methode join() übergeben wird oder undefiniert übergeben wird, wird ein Komma als Trennzeichen
verwendetvar colors = ['red','green','blue']; console.log(colors.join(','));//'red,green,blue' console.log(colors.join('||'));//'red||green||blue' console.log(colors.join());//'red,green,blue' console.log(colors.join(undefined));//'red,green,blue'[注意]IE7-会使用undefined作为分隔符
[Hinweis] Wenn der Wert eines Elements im Array null oder undefiniert ist, wird der Wert in den von join(), toLocaleString(), toString() und valueOf( zurückgegebenen Ergebnissen durch eine leere Zeichenfolge dargestellt. ) Methoden
Array-Erkennung
Seit ES3 die Vorschriften erlassen hat, ist das klassische Problem der Bestimmung, ob ein Objekt ein Array ist, aufgetreten. Die übliche Methode ist die Verwendung des Instanzoperators, aber diese Methode hat ihre Einschränkungen; ES5 fügt speziell die Methode isArray() zum Erkennen von Arrays hinzu
var value = [123]; console.log(value instanceof Array);//true
Das Problem mit dem Operator „instanceof“ besteht darin, dass davon ausgegangen wird, dass es nur eine globale Ausführungsumgebung gibt. Wenn die Webseite mehrere Frames enthält, gibt es tatsächlich mehr als zwei verschiedene globale Umgebungen und somit mehr als zwei verschiedene Versionen des Arrays Konstrukteur. Wenn ein Array von einem Frame an einen anderen übergeben wird, haben das übergebene Array und das im zweiten Frame nativ erstellte Array unterschiedliche Konstruktoren
//在不同框架中不能共享prototype属性 var iframe = document.createElement('iframe'); document.body.appendChild(iframe); var value = new window.frames[0].Array; console.log(value instanceof Array);//false console.log(value.constructor == Array);//false
Die toString()-Methode kann jedoch prototypkettenübergreifend in verschiedenen Frameworks aufgerufen werden
var iframe = document.createElement('iframe'); document.body.appendChild(iframe); var value = new window.frames[0].Array; console.log(Object.prototype.toString.call(value));//[object Array]
ES5 fügt die Methode Array.isArray() hinzu, um letztendlich zu bestimmen, ob ein Wert ein Array ist, unabhängig von der globalen Umgebung, in der er erstellt wurde
Array.isArray()
var value = [123]; console.log(Array.isArray(value));//true var iframe = document.createElement('iframe'); document.body.appendChild(iframe); var value = new window.frames[0].Array; console.log(Array.isArray(value));//true
栈和队列
push()
可以接收任意数量的参数,把它们逐个添加到数组末尾,并返回修改后数组的长度
pop()
从数组末尾移除最后一项,减少数组的length值,然后返回移除的项
shift()
移除数组中的第一个项并返回该项,同时数组的长度减1(结合使用shift()和push()可以模拟队列)
unshift()
在数组前端添加任意个项并返回新数组长度(结合使用unshift()和pop()从相反方向模拟队列)
[注意]IE7-浏览器unshift()方法返回的总是undefined
var colors = []; var count = colors.push('red','green'); console.log(colors,count);//['red','green'] 2 var count = colors.pop(); console.log(colors,count);//['red'] 'green' var count = colors.unshift('white','black'); console.log(colors,count);//["white", "black", "red"] 3 var count = colors.shift(); console.log(colors,count);//["black", "red"] "white"
排序方法
reverse()
反转数组的顺序,返回经过排序之后的数组;而原数组顺序也发生改变
var array = [1,2,4,3,5]; console.log(array,array.reverse());//[5,3,4,2,1] [5,3,4,2,1] var array = ['str',true,3]; console.log(array,array.reverse());//[3,true,'str'] [3,true,'str']
sort()
默认情况下,按字符串升序排列数组项,sort方法会调用每个数组项的toString()方法,然后比较得到的字符串排序,返回经过排序之后的数组,而原数组顺序也发生改变
var array = [1,2,4,3,5]; console.log(array,array.sort());//[1,2,3,4,5] [1,2,3,4,5] var array = ['3str',3,2,'2']; console.log(array,array.sort());//[2, "2", 3, "3str"] [2, "2", 3, "3str"] var array = [1,5,10,50]; console.log(array,array.sort());//[1, 10, 5, 50] [1, 10, 5, 50]
[注意]sort()方法可以接受一个比较函数作为参数,以便指定哪个值在哪个值的前面。比较函数接收两个参数,如果第一个参数应该位于第二个参数之前则返回一个负数,如果两个参数相等则返回0,如果第一个参数应该位于第二个参数之后则返回一个正数
[tips]比较函数
function compare(value1,value2){ if(value1 < value2){ return -1; }else if(value1 > value2){ return 1; }else{ return 0; } } var array = ['5px',50,1,10]; //当数字与字符串比较大小时,字符串'5px'会被转换成NaN,这样结果就是false console.log(array.sort(compare));//["5px",1, 10, 50]
对于数值类型或valueOf()方法会返回数值类型的对象类型,比较函数可以简化为:
function compare(value1,value2){ return value1 - value2; } var array = ['5px',50,1,10]; console.log(array.sort(compare));//["5px",1,10,50] var array = [5,50,1,10]; console.log(array.sort(compare));//[1,5,10,50]
[tips]创建一个随机数组
function compare(){ return Math.random() - 0.5; } var array = [1,2,3,4,5]; console.log(array.sort(compare));//[2,1,5,4,3]
操作方法
concat()
基于当前数组中的所有项创建一个新数组,先创建当前数组一个副本,然后将接收到的参数添加到这个副本的末尾,最后返回新构建的数组(concat()不影响原数组)
如果不给concat()方法传递参数时,它只是复制当前的数组;如果参数是一个或多个数组,则该方法会将这些数组中的每一项都添加到结果数组中;如果传递的值不是数组,这些值就会被简单地添加到结果数组的末尾
var numbers = [1,2]; console.log(numbers,numbers.concat());//[1,2] [1,2] console.log(numbers,numbers.concat([5,4,3],[3,4,5],1,2));//[1,2] [1,2,5,4,3,3,4,5,1,2]
slice()
基于当前数组中的一个或多个项创建一个新数组,接受一个或两个参数,即要返回项的起始和结束位置,最后返回新数组(slice()不影响原数组)
如果没有参数,则返回原数组;如果只有一个参数时,slice()方法返回从该参数指定位置开始到当前数组末尾的所有项;若有两个参数时,该方法返回起始位置和结束位置之间的项,但不包括结束位置的项;若参数为负数时,则用数组长度加负数作为参数;若结束位置小于开始位置,则返回空数组
var numbers = [1,2,3,4,5]; console.log(numbers.slice());//[1,2,3,4,5] console.log(numbers.slice(2));//[3,4,5] console.log(numbers.slice(2,3));//[3] console.log(numbers.slice(-3));//-3+5=2 -> [3,4,5] console.log(numbers.slice(2,1));//[]
splice()
原数组变为修改后的数组,而splice()返回从原数组中删除的项组成的数组,若无删除项则返回空数组。若第一个参数为负数时,则用数组长度加负数作为参数;若第二个参数为负数时,则用0作为参数
[1]删除:两个参数为要删除的第一项的位置、要删除的项数
[2]插入:三个参数为起始位置、0(要删除的基数)、要插入的项
[3]替换:三个参数为起始位置、要删除的项数、要插入的项
var numbers = [1,2,3,4,5]; console.log(numbers.splice(),numbers);//[] [1, 2, 3, 4, 5] console.log(numbers.splice(0,2),numbers);//[1,2] [3,4,5] var numbers = [1,2,3,4,5]; console.log(numbers.splice(1,0,11,12),numbers);//[] [1,11,12,2,3,4,5] var numbers = [1,2,3,4,5]; console.log(numbers.splice(1,3,11,12),numbers);//[2,3,4] [1,11,12,5] var numbers = [1,2,3,4,5]; console.log(numbers.splice(-4,3,11,12),numbers);//-4+5=1 -> [2,3,4] [1,11,12,5] var numbers = [1,2,3,4,5]; console.log(numbers.splice(-4,-3,11,12),numbers);//-4+5=1 -> [] [1,11,12,2,3,4,5]
位置方法
ES5为数组实例添加了两个位置方法indexOf()、lastIndexOf()。这两个方法都接收两个参数:要查找的项、表示查找起点位置的索引(可选)。返回第一个满足条件的查找项在数组中的位置,如果没有找到则返回-1(位置方法不会影响原数组)
[注意]方法在比较参数时,使用的是全等操作符
indexOf() 从前向后查找
lastIndexOf() 从后向前查找
var numbers = [1,2,3,4,5,4,3,2,1]; console.log(numbers.indexOf(4));//3 console.log(numbers.lastIndexOf(4));//5 console.log(numbers.indexOf(4,4));//5 console.log(numbers.lastIndexOf(4,4));//3 var person = {name: 'Nicholas'}; var people = [{name: 'Nicholas'}]; var morePeople = [person]; alert(people.indexOf(person));//-1,因为person和people[0]虽然值相同,但是是两个引用 alert(morePeople.indexOf(person));//0,因为person和morepeople[0]是同一个引用 alert(morePeople.indexOf({name: 'Nicholas'}));//-1,因为不是同一个引用
[tips]返回满足条件的项的所有索引值
function allIndexOf(array,value){ var result = []; var pos = array.indexOf(value); if(pos === -1){ return -1; } while(pos > -1){ result.push(pos); pos = array.indexOf(value,pos+1); } return result; } var array = [1,2,3,3,2,1]; console.log(allIndexOf(array,1));//[0,5]
以上就是本文的详细内容,希望对大家的学习javascript程序设计有所帮助。

Es ist für Entwickler wichtig, zu verstehen, wie die JavaScript -Engine intern funktioniert, da sie effizientere Code schreibt und Leistungs Engpässe und Optimierungsstrategien verstehen kann. 1) Der Workflow der Engine umfasst drei Phasen: Parsen, Kompilieren und Ausführung; 2) Während des Ausführungsprozesses führt die Engine dynamische Optimierung durch, wie z. B. Inline -Cache und versteckte Klassen. 3) Zu Best Practices gehören die Vermeidung globaler Variablen, die Optimierung von Schleifen, die Verwendung von const und lass und die Vermeidung übermäßiger Verwendung von Schließungen.

Python eignet sich besser für Anfänger mit einer reibungslosen Lernkurve und einer kurzen Syntax. JavaScript ist für die Front-End-Entwicklung mit einer steilen Lernkurve und einer flexiblen Syntax geeignet. 1. Python-Syntax ist intuitiv und für die Entwicklung von Datenwissenschaften und Back-End-Entwicklung geeignet. 2. JavaScript ist flexibel und in Front-End- und serverseitiger Programmierung weit verbreitet.

Python und JavaScript haben ihre eigenen Vor- und Nachteile in Bezug auf Gemeinschaft, Bibliotheken und Ressourcen. 1) Die Python-Community ist freundlich und für Anfänger geeignet, aber die Front-End-Entwicklungsressourcen sind nicht so reich wie JavaScript. 2) Python ist leistungsstark in Bibliotheken für Datenwissenschaft und maschinelles Lernen, während JavaScript in Bibliotheken und Front-End-Entwicklungsbibliotheken und Frameworks besser ist. 3) Beide haben reichhaltige Lernressourcen, aber Python eignet sich zum Beginn der offiziellen Dokumente, während JavaScript mit Mdnwebdocs besser ist. Die Wahl sollte auf Projektbedürfnissen und persönlichen Interessen beruhen.

Die Verschiebung von C/C zu JavaScript erfordert die Anpassung an dynamische Typisierung, Müllsammlung und asynchrone Programmierung. 1) C/C ist eine statisch typisierte Sprache, die eine manuelle Speicherverwaltung erfordert, während JavaScript dynamisch eingegeben und die Müllsammlung automatisch verarbeitet wird. 2) C/C muss in den Maschinencode kompiliert werden, während JavaScript eine interpretierte Sprache ist. 3) JavaScript führt Konzepte wie Verschlüsse, Prototypketten und Versprechen ein, die die Flexibilität und asynchrone Programmierfunktionen verbessern.

Unterschiedliche JavaScript -Motoren haben unterschiedliche Auswirkungen beim Analysieren und Ausführen von JavaScript -Code, da sich die Implementierungsprinzipien und Optimierungsstrategien jeder Engine unterscheiden. 1. Lexikalanalyse: Quellcode in die lexikalische Einheit umwandeln. 2. Grammatikanalyse: Erzeugen Sie einen abstrakten Syntaxbaum. 3. Optimierung und Kompilierung: Generieren Sie den Maschinencode über den JIT -Compiler. 4. Führen Sie aus: Führen Sie den Maschinencode aus. V8 Engine optimiert durch sofortige Kompilierung und versteckte Klasse.

Zu den Anwendungen von JavaScript in der realen Welt gehören die serverseitige Programmierung, die Entwicklung mobiler Anwendungen und das Internet der Dinge. Die serverseitige Programmierung wird über node.js realisiert, die für die hohe gleichzeitige Anfrageverarbeitung geeignet sind. 2. Die Entwicklung der mobilen Anwendungen erfolgt durch reaktnative und unterstützt die plattformübergreifende Bereitstellung. 3.. Wird für die Steuerung von IoT-Geräten über die Johnny-Five-Bibliothek verwendet, geeignet für Hardware-Interaktion.

Ich habe eine funktionale SaaS-Anwendung mit mehreren Mandanten (eine EdTech-App) mit Ihrem täglichen Tech-Tool erstellt und Sie können dasselbe tun. Was ist eine SaaS-Anwendung mit mehreren Mietern? Mit Multi-Tenant-SaaS-Anwendungen können Sie mehrere Kunden aus einem Sing bedienen

Dieser Artikel zeigt die Frontend -Integration mit einem Backend, das durch die Genehmigung gesichert ist und eine funktionale edtech SaaS -Anwendung unter Verwendung von Next.js. erstellt. Die Frontend erfasst Benutzerberechtigungen zur Steuerung der UI-Sichtbarkeit und stellt sicher, dass API-Anfragen die Rollenbasis einhalten


Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

PHPStorm Mac-Version
Das neueste (2018.2.1) professionelle, integrierte PHP-Entwicklungstool

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

EditPlus chinesische Crack-Version
Geringe Größe, Syntaxhervorhebung, unterstützt keine Code-Eingabeaufforderungsfunktion

SublimeText3 Englische Version
Empfohlen: Win-Version, unterstützt Code-Eingabeaufforderungen!

SAP NetWeaver Server-Adapter für Eclipse
Integrieren Sie Eclipse mit dem SAP NetWeaver-Anwendungsserver.