In Fortsetzung des vorherigen Artikels „Grundlegende Einführung in Javascript Array Array“ werden in diesem Artikel alle Methoden von Array im Detail vorgestellt.
Alle Array-Methoden sind in Array.prototype definiert, und Array.prototype selbst ist ebenfalls ein Array.
array.concat()
Flache Kopie des aktuellen Arrays und Anhängen der empfangenen Parameter an das Ende des neuen Arrays. Das ursprüngliche Array bleibt unverändert.
Grammatik
array.concat(value1, value2, ..., valueN)
Der Parameter ist ein Array- oder Nicht-Array-Wert, der zusammengeführt werden muss
var arr1 = [1, 2, 3]; var obj = {animal : 'monkey'}; var arr2 = arr1.concat([4, 5, 6], obj, [7, 8, 9]); // arr1 [1, 2, 3] // arr2 [1, 2, 3, 4, 5, 6, {animal : 'monkey'}, 7, 8, 9] obj.animal = 'tiger'; // [1, 2, 3, 4, 5, 6, {animal : 'tiger'}, 7, 8, 9]
Sie können Array- oder Nicht-Array-Werte kombinieren. Beachten Sie jedoch, dass sich das Objekt beim Einschließen eines Objekts immer noch auf das ursprüngliche Objekt bezieht.
array.join()
Gibt eine Zeichenfolge zurück, die mit allen Elementen des Arrays unter Verwendung von Trennzeichen verkettet ist. Das Standardtrennzeichen ist Komma.
Grammatik
array.join(seperator)
Der Parameter ist das Trennzeichen
var arr1 = [1, 2, 3]; var str = arr1.join(); // 1,2,3 str = arr1.join('#'); // 1#2#3
Beim Zusammensetzen einer großen Anzahl von Zeichenfolgenfragmenten ist die Join-Methode schneller als der +Element-Operator.
Mit new Array(3) wird ein leeres Array mit einer Länge von drei generiert. In Kombination mit der Methode join() können Sie eine bestimmte Zeichenfolge wiederholen.
var str = new Array(3).join('-+'); // -+-+
Die Anzahl der Wiederholungen ist die Länge des Arrays minus eins, da die Zeichenfolge das Trennzeichen ist.
Da das Array selbst ein Objekt ist, verfügt es über die Methode toString(), die auch zum Zusammenfügen des Arrays in einen String verwendet werden kann, das Trennzeichen darf jedoch nur ein Komma sein.
var arr1 = [1, 2, 3]; arr1.toString(); // 1,2,3
Tatsächlich wird zuerst die toString()-Methode jedes Elements aufgerufen.
array.push()
Hängen Sie einen oder mehrere Parameter an das Ende des Arrays an und geben Sie die Array-Länge zurück. Ändern Sie das Array selbst.
Grammatik
array.push(value1, value2, ..., valueN);
Beispiel
var arr1 = [1, 2, 3]; var len = arr1.push(4, 5); console.log(len); // 5 console.log(arr1); // [1, 2, 3, 4, 5]
Es kann auch eine andere Methode implementiert werden, um Werte am Ende des Arrays einzufügen.
arr1[arr1.length] = 6; // [1, 2, 3, 4, 5, 6] array.pop()
Löschen Sie das letzte Element im Array und geben Sie das gelöschte Element zurück. Ändern Sie das Array selbst.
var arr1 = [1, 2, 3]; arr.pop(); // [1, 2] 返回 3
Wenn das Array leer ist, geben Sie undefiniert zurück.
array.unshift()
Fügen Sie einen oder mehrere Parameter in den Kopf des Arrays ein und geben Sie die Array-Länge zurück. Ändern Sie das Array selbst.
var arr1 = [1, 2, 3]; var len = arr1.unshift(4, 5); console.log(len); // 5 console.log(arr1); // [4, 5, 1, 2, 3]
array.shift()
Löschen Sie das erste Element des Arrays und geben Sie das gelöschte Element zurück. Ändern Sie das Array selbst.
var arr1 = [1, 2, 3]; arr.shift(); // [2, 3] 返回 1
Wenn das Array leer ist, geben Sie undefiniert zurück.
array.sort()
Diese Methode sortiert nach dem von der toString()-Methode jedes Elements zurückgegebenen Wert, sodass im Allgemeinen nicht die erwarteten Ergebnisse erzielt werden.
var arr1 = [1, 2, 3, 14, 24]; arr1.sort(); // [1, 14, 2, 24, 3]
Aber die Methode sort() kann eine benutzerdefinierte Funktion zum Vergleich empfangen. Die Vergleichsfunktion akzeptiert zwei Parameter, insbesondere sort(), das standardmäßig in aufsteigender Reihenfolge sortiert ist. Wenn Sie also möchten, dass der erste Parameter vor dem zweiten Parameter steht, müssen Sie eine negative Zahl zurückgeben, wenn sie gleich ist, geben Sie 0 zurück, und wenn ja, müssen Sie eine negative Zahl zurückgeben dahinter, geben Sie eine positive Zahl zurück.
var compare = function(a, b){ return a - b; } var arr2 = [1, 12, 2, 23, 3 , 5, 4]; arr2.sort(compare); // [1, 2, 3, 4, 5, 12, 23]
Der Vergleich von Zeichenfolgen kann in Verbindung mit der Methode string.localeCompare() verwendet werden.
var arr3 = ['F', 'e', 'f', 'E']; arr3.sort(function(a, b){ return a.localeCompare(b); }); // ['e', 'E', 'f', 'F']
array.reverse()
Kehren Sie die Reihenfolge der Array-Elemente um und geben Sie das Array selbst zurück.
var arr1 = [1, 4, 3, 2]; arr1.reverse(); // [2, 3, 4, 1]
array.slice()
Flachkopieren Sie einen Abschnitt des Arrays, ohne das Array selbst zu ändern.
array.slice(start, end);
Die Methode akzeptiert zwei Parameter, der letzte kann weggelassen werden und der Standardwert ist die Länge des Arrays selbst.
var arr1 = [1, 2, 3, 4, 5, 6]; arr1.slice(4); // [5, 6] arr1.slice(2, 4); // [3, 4] arr1.slice(-3); // [4, 5, 6]
Wenn eine negative Zahl übergeben wird, wird die Länge des Arrays automatisch hinzugefügt, um zu versuchen, eine nicht negative Zahl zu werden.
Die Übergabe eines Werts, dessen Absolutwert kleiner als die Länge des Arrays ist, bedeutet, dass die Anzahl der negativen Absolutwertelemente von hinten nach vorne genommen wird. Im Beispiel werden beispielsweise die letzten drei Elemente übernommen.
array.splice()
Dies ist die leistungsstärkste und am häufigsten verwendete Methode in Arrays. Sie kann Löschen, Einfügen und Ersetzen ermöglichen.
Grammatik
array.slice(start, count, item);
Diese Methode entfernt ein oder mehrere Elemente und ersetzt sie durch neue Elemente. start ist die Startposition, count ist die Anzahl der Löschungen, item ist das neu hinzugefügte Element (es gibt mehr als ein Element und kann weggelassen werden) und die gelöschten Elemente werden in Form eines Arrays zurückgegeben.
var arr1 = [1, 2, 3, 4, 5]; //删除 arr1.splice(2, 1); // [1, 2, 4, 5] 返回 [3] //插入 arr1.splice(3, 0, 6, 7); // [1, 2, 4, 6, 7, 5] //替换 arr1.splice(1, 2, 8, 9); // [1, 8, 9, 6, 7, 5] 返回[2, 4]
Im Folgenden werden einige neue Methoden von ECMAScript5 vorgestellt, hauptsächlich weil ie8 sie nicht unterstützt.
indexOf() und lastIndexOf()
Suchen Sie die Indexposition des entsprechenden Elements im Array. Der zweite Parameter gibt die Startposition der entsprechenden Suchrichtung an. Wenn nicht gefunden, geben Sie -1 zurück.
indexOf() sucht von vorne nach hinten und lastIndexOf() sucht von hinten nach vorne.
var arr1 = [1, 2, 3, 4, 3, 2, 1]; arr1.indexOf(2); // 1 arr1.indexOf(2, 3); // 5 arr1.lastIndexOf(3); // 4 arr1.lastIndexOf(3, 4) // 2
Iterative Methode
Die folgende Methode akzeptiert zwei Parameter: Der erste ist die Funktion, die für jedes Element ausgeführt werden soll, und der zweite ist der Bereich, in dem die Funktion ausgeführt wird.
Die laufende Funktion hat drei Parameter, nämlich das aktuelle Element, die Position und das Array selbst.
array.every()
Führen Sie die angegebene Funktion aus. Wenn jedes Element der Iteration „true“ zurückgibt, wird es schließlich „true“ zurückgeben.
var arr1 = [1, 2, 3, 4, 5]; arr1.every(function(item, index, array){ return item > 3; }); // false
array.some()
运行给定函数,如果迭代中有一项返回true,则最终返回true。
arr1.some(function(item, index, array){ return item > 3; }); // true
array.map()
运行给定函数,将迭代中返回的值组成数组,返回该数组。
arr1.map(function(item, index, array){ return item * 2; }); // [2, 4, 6, 8, 10]
array.filter()
运行给定函数,将迭代中返回true的元素以数组形式返回
arr1.filter(function(item, index, array){ return item > 3; }); // [4, 5]
array.forEach()
运行给定函数,不返回任何值。类似于普通的for循环的功能。
归并方法
函数接受两个参数,第一个参数是每一个运行的自定义函数,第二项是作为归并基础的初始值。
自定义函数接受四个参数,分别是前一项,当前项,位置,数组。
array.reduce() 与 array.reduceRight() var splitstr = function(prev, item, index, array){ return prev + '#' + item; } var arr1 = [1, 2, 3, 4, 5]; arr1.reduce(splitstr, 8); // 8#1#2#3#4#5 arr1.reduceRight(splitstr, 8); // 8#5#4#3#2#1
小结
这一篇介绍了数组方法的种种细节和注意问题,下一篇将会介绍数组更高级的用法。本篇后续会添加ECMAScript6 新增加的数组方法的介绍。