Heim Web-Frontend js-Tutorial JavaScript-Studiennotizen ES6-Array-Methode_Javascript-Kenntnisse

JavaScript-Studiennotizen ES6-Array-Methode_Javascript-Kenntnisse

May 16, 2016 pm 03:08 PM

ES6 (ECMAScript 6) ist der Standard für die kommende neue Version der JavaScript-Sprache mit dem Codenamen Harmony (was Harmonie bedeutet, offensichtlich hat es nicht mit dem Tempo unseres Landes Schritt gehalten, wir sind in die Chinese Dream-Version eingetreten). Das letzte Mal, dass ein Standard formuliert wurde, war ES5, der 2009 veröffentlicht wurde. Die Standardisierungsarbeiten an ES6 sind derzeit im Gange und die offiziell finalisierte Version wird voraussichtlich im Dezember 2014 veröffentlicht. Die meisten Standards sind jedoch bereits vorhanden und die Browserunterstützung für ES6 wird implementiert.

ES6 fügt Arrays einige neue Funktionen hinzu, und diese neuen Funktionen können bisher auf Ihre eigene Geschäftsschicht angewendet werden. In diesem Abschnitt fassen wir zusammen, wie einige der neuen Funktionen von ES6 für Arrays verwendet werden.

Zwei statische Methoden, die von ES6 bereitgestellt werden:

Array.from

Array.of

ES6 bietet Methoden zum Bearbeiten, Füllen und Filtern von Arrays:

Array.prototype.copyWidthin
Array.prototype.fill
Array.prototype.find
Array.prototype.findIndex

Es gibt Methoden zur Array-Iteration in ES6:

Array.prototype.keys
Array.prototype.values
Array.prototype.entries
Array.prototype[Symbol.iterator]

Im Folgenden wird hauptsächlich auf die Verwendung dieser Methoden eingegangen.

Array.from()

Die Methode Array.from() wird hauptsächlich zum Konvertieren von zwei Arten von Objekten (Array-ähnliche Objekte [array-ähnliche Objekte] und durchquerbare Objekte [iterierbar]) in echte Arrays verwendet.

In ES5 wird häufig die folgende Methode verwendet, um ein Array-ähnliches Objekt in ein Array zu konvertieren:

function cast () {
return Array.prototype.slice.call(arguments);
}
cast('a','b','c','d'); // ["a", "b", "c", "d"]
Nach dem Login kopieren

Oder Sie können auch schreiben:

function cast () {
return [].slice.call(arguments);
}
cast('a','b','c','d'); // ["a", "b", "c", "d"]
Nach dem Login kopieren

In ES6 können Sie Array.from verwenden, um ein Array-ähnliches Objekt in ein echtes Array umzuwandeln.

Das sogenannte Array-ähnliche Objekt hat nur ein wesentliches Merkmal, nämlich ein Längenattribut. Daher ist jedes Objekt mit einem Längenattribut ein Array-ähnliches Objekt und kann über die Array.from-Methode in ein echtes Array umgewandelt werden.

let arrayLike = {
'0': 'a',
'1': 'b',
'2': 'c',
length: 3
}
console.log(Array.from(arrayLike)); // ["a","b","c"]
Nach dem Login kopieren

In ES6 kann der Spread-Operator (...) auch einige Datenstrukturen in Arrays konvertieren. Es muss lediglich die Iteratorschnittstelle Symbol.iterator hinter den Kulissen aufgerufen werden.

function cast (){
return [...arguments]
}
cast('a','b','c'); // ["a","b","c"]
Nach dem Login kopieren

Es ist erwähnenswert, dass der Spread-Operator nicht zum Konvertieren eines Array-ähnlichen Objekts in ein Array verwendet werden kann, wenn ein Objekt keine Traverser-Schnittstelle bereitstellt.

Array.from akzeptiert drei Parameter, es ist jedoch nur eine Eingabe erforderlich:

Eingabe: Array-ähnliche Objekte und durchquerbare Objekte, die Sie konvertieren möchten

map: Ähnlich der Map-Methode eines Arrays wird sie verwendet, um jedes Element zu verarbeiten und den verarbeiteten Wert in das zurückgegebene Array
einzufügen

Kontext: Dies
wird in der Bindungskarte verwendet

Solange die Datenstruktur der Iteratorschnittstelle bereitgestellt ist, kann Array.from sie in ein Array konvertieren:

let arr = Array.from('w3cplus.com')
console.log(arr); // ["w","3","c","p","l","u","s",".","c","o","m"]
let namesSet = new Set(['a', 'b'])
let arr2 = Array.from(namesSet) 
console.log(arr2); //["a","b"]
Nach dem Login kopieren

Da sowohl die Zeichenfolge als auch die Set-Struktur über Iteratorschnittstellen verfügen, kann der obige Code von Array.from in ein echtes Array konvertiert werden. Wenn der Parameter ein echtes Array ist, gibt Array.from auch ein identisches neues Array zurück:

let arr = Array.from([1, 2, 3]);
console.log(arr); // [1,2,3]
Nach dem Login kopieren

Wie bereits erwähnt, kann Array.from auch einen zweiten Parameter akzeptieren, der der Map-Methode eines Arrays ähnelt. Er wird zur Verarbeitung jedes Elements verwendet und der verarbeitete Wert wird in das zurückgegebene Array eingefügt:

Array.from(arrayLike, x => x * x);
// 等同于
Array.from(arrayLike).map(x => x * x);
Array.from([1, 2, 3], (x) => x * x)
// [1, 4, 9]
Nach dem Login kopieren

Wenn das Schlüsselwort this in der Map-Funktion verwendet wird, können Sie auch den dritten Parameter von Array.from übergeben, um dies zu binden.

Array.from() kann verschiedene Werte in echte Arrays umwandeln und bietet außerdem eine Kartenfunktion. Das bedeutet eigentlich, dass Sie, solange Sie über eine primitive Datenstruktur verfügen, zunächst deren Wert verarbeiten und ihn dann in eine kanonische Array-Struktur konvertieren und dann eine große Anzahl von Array-Methoden verwenden können.

Array.from({ length: 2 }, () => 'jack')
// ['jack', 'jack']
Nach dem Login kopieren

Im obigen Code gibt der erste Parameter von Array.from an, wie oft der zweite Parameter ausgeführt wird. Diese Funktion macht den Einsatz dieser Methode sehr flexibel.

Eine weitere Anwendung von Array.from() besteht darin, einen String in ein Array umzuwandeln und dann die Länge des Strings zurückzugeben. Da es verschiedene Unicode-Zeichen korrekt verarbeiten kann, kann der Fehler vermieden werden, dass JavaScript Unicode-Zeichen, die größer als uFFFF sind, als zwei Zeichen zählt.

function countSymbols(string) {
return Array.from(string).length;
}
Nach dem Login kopieren

Mit Array.from() können auch verschiedene Datentypen zurückgegeben werden:

function typesOf () {
return Array.from(arguments, value => typeof value)
}
typesOf(null, [], NaN)
// <- ['object', 'object', 'number']
Nach dem Login kopieren

Sie können auch die Kartenmethode verwenden, um die Funktion des obigen Codes zu implementieren:

function typesOf (...all) {
return all.map(value => typeof value)
}
typesOf(null, [], NaN)
// <- ['object', 'object', 'number']
Array.of
Nach dem Login kopieren

Verwenden Sie die Methode Array.of, um eine Reihe von Werten in ein Array umzuwandeln.

Array.of = function of () {
return Array.prototype.slice.call(arguments)
}
Nach dem Login kopieren

Aber Sie können Array.of nicht anstelle von Array.prototype.slice.call verwenden, sie verhalten sich anders:

Array.prototype.slice.call([1, 2, 3])
// <- [1, 2, 3]
Array.of(1, 2, 3)
// <- [1, 2, 3]
Array.of(3)
// <- [1]
Nach dem Login kopieren

Der Hauptzweck dieser Methode besteht darin, die Mängel des Array-Konstruktors Array() auszugleichen. Da die Anzahl der Parameter unterschiedlich ist, ist das Verhalten von Array() unterschiedlich:

new Array()
// <- []
new Array(undefined)
// <- [undefined]
new Array(1)
// <- [undefined x 1]
new Array(3)
// <- [undefined x 3]
new Array(1, 2)
// <- [1, 2]
new Array(-1)
// <- RangeError: Invalid array length
Nach dem Login kopieren

Array.of kann grundsätzlich verwendet werden, um Array() oder new Array() zu ersetzen, und es gibt keine Überlastung aufgrund unterschiedlicher Parameter und ihr Verhalten ist sehr einheitlich:

Array.of()
// <- []
Array.of(undefined)
// <- [undefined]
Array.of(1)
// <- [1]
Array.of(3)
// <- [3]
Array.of(1, 2)
// <- [1, 2]
Array.of(-1)
// <- [-1]
Nach dem Login kopieren

Array.of方法可以使用下面的代码来模拟实现:

function ArrayOf(){
return [].slice.call(arguments);
}
Nach dem Login kopieren

copyWidthin

copyWidthin方法可以在当前数组内部,将指定位置的数组项复制到其他位置(会覆盖原数组项),然后返回当前数组。使用copyWidthin方法会修改当前数组。

Array.prototype.copyWithin(target, start = 0, end = this.length)
Nach dem Login kopieren

copyWidthin将会接受三个参数:

target: 这个参数是必须的,从该位置开始替换数组项

start: 这是一个可选参数,从该位置开始读取数组项,默认为0,如果为负值,表示从数组的右边向左开始读取

end: 这是一个可选参数,到该位置停止读取的数组项,默认等于Array.length。如果为负值,表示倒数

我们先来看一个简单的示例,下面声明了一个items数组:

var items = [1, 2, 3, ,,,,,,,]; // <- [1, 2, 3, undefined x 7]
Nach dem Login kopieren

下面的代码将在数组items的第六个位置开始粘贴数组项。粘贴过去的数组项是从items的第二位开始到第三位置结束。

items.copyWithin(6, 1, 3)
// <- [1, 2, 3, undefined × 3, 2, 3, undefined × 2]
Nach dem Login kopieren

下面是更多例子:

// 将3号位复制到0号位
[1, 2, 3, 4, 5].copyWithin(0, 3, 4)
// [4, 2, 3, 4, 5]
// -2相当于3号位,-1相当于4号位
[1, 2, 3, 4, 5].copyWithin(0, -2, -1)
// [4, 2, 3, 4, 5]
// 将3号位复制到0号位
[].copyWithin.call({length: 5, 3: 1}, 0, 3)
// {0: 1, 3: 1, length: 5}
// 将2号位到数组结束,复制到0号位
var i32a = new Int32Array([1, 2, 3, 4, 5]);
i32a.copyWithin(0, 2);
// Int32Array [3, 4, 5, 4, 5]
// 对于没有部署TypedArray的copyWithin方法的平台
// 需要采用下面的写法
[].copyWithin.call(new Int32Array([1, 2, 3, 4, 5]), 0, 3, 4);
// Int32Array [4, 2, 3, 4, 5]
Array.prototype.fill
Nach dem Login kopieren

Array.prototype.fill方法使用给定的值填充一个数组:

['a', 'b', 'c'].fill(0)
// <- [0, 0, 0]
new Array(3).fill(0)
// <- [0, 0, 0]
Nach dem Login kopieren

上面这种方法用于空数组的初始化非常方便。数组中已有的元素会全部被抹去。

除此之外,Array.prototype.fill方法还可以接受第二个和第三个参数,用于指定填充的起始位置和结束位置。

['a', 'b', 'c',,,].fill(0, 2)
// <- ['a', 'b', 0, 0, 0]
new Array(5).fill(0, 0, 3)
// <- [0, 0, 0, undefined x 2]
Nach dem Login kopieren

Array.prototype.fill提供的值可以是任意的,不仅可以是一个数值,甚至还可以是一个原始类型:

new Array(3).fill({})
// <- [{}, {}, {}]
Nach dem Login kopieren

不过这个方法不可以接受数组的映射方法,不过可以接受一个索引参数或类似下面这样的方式:

new Array(3).fill(function foo () {})
// <- [function foo () {}, function foo () {}, function foo () {}]
Array.prototype.find
Nach dem Login kopieren

Array.prototype.find方法用于找出第一个符合条件的数组成员。它的参数是一个回调函数,所有数组成员依次执行该回调函数,直到找出第一个返回值为true的数组项,然后返回该数组项。如果没有符合条件的数组项,则返回undefined。

[1, 2, 3, 4, 5].find(item => item > 2)
// <- 3
[1, 2, 3, 4, 5].find((item, i) => i === 3)
// <- 4
[1, 2, 3, 4, 5].find(item => item === Infinity)
// <- undefined
Nach dem Login kopieren

另外这种方法的回调函数可以接受三个参数,依次为当前的值、当前的位置和原始数组。

[1, 5, 10, 15].find(function(value, index, arr) {
return value > 9;
}) // 10
Array.prototype.findIndex
Nach dem Login kopieren

这个方法类似于.some和.find方法。像.some返回true;像.find返回item。如果array[index] === item则返回其index。

Array.prototype.findIndex方法主要是用来返回数组项在数组中的位置。其和Array.prototype.find方法非常类似,接受一个回调函数,如果符合回调函数的条件,则返回数组项在数组中的位置,如果所有数组项都不符合回调函数条件,则会返回-1。

[1, 2, 3, 4, 5].find(item => item > 2)
// <- 2
[1, 2, 3, 4, 5].find((item, i) => i === 3)
// <- 3
[1, 2, 3, 4, 5].find(item => item === Infinity)
// <- -1
Nach dem Login kopieren

这个方法也可以接受第二个参数,用来绑定回调函数的this对象。

注:Array.prototype.find和Array.prototype.findIndex两个方法都可以发现NaN,弥补数组的indexOf方法的不足。

[NaN].indexOf(NaN)
// -1
[NaN].findIndex(y => Object.is(NaN, y))
// 0
Nach dem Login kopieren

上面的代码中,indexOf方法无法识别数组的NaN成员,但是findIndex方法可以借助Object.is方法做到。

ES6遍历数组的方法

ES6提供了三个新方法:entries()、keys()和values(),用来遍历数组。它们都返回一个遍历器对象,可以用for...of循环进行遍历,唯一的区别是keys()是对数组的键名的遍历、values()是对数组键值的遍历,entries()方法是对数值的键值对的遍历。

for (let index of ['a', 'b'].keys()) {
console.log(index);
}
// 0
// 1
for (let elem of ['a', 'b'].values()) {
console.log(elem);
}
// 'a'
// 'b'
for (let [index, elem] of ['a', 'b'].entries()) {
console.log(index, elem);
}
// 0 "a"
// 1 "b"
Nach dem Login kopieren

如果不使用for...of循环,可以手动调用遍历器对象的next方法,进行遍历:

let letter = ['a', 'b', 'c'];
let entries = letter.entries();
console.log(entries.next().value); // [0, 'a']
console.log(entries.next().value); // [1, 'b']
console.log(entries.next().value); // [2, 'c']
Nach dem Login kopieren

总结

这里简单的总结了有关于ES6中数组的相关方法。说实在的,初次接触ES6,很多东西都看得云里来雾里去。这里只是整理了一下这方面的相关知识。

关于JavaScript学习笔记之ES6数组方法小编就给大家介绍到这里,希望对大家有所帮助!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Abenteuer: Wie man riesige Samen bekommt
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
Zwei -Punkte -Museum: Alle Exponate und wo man sie finden kann
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Ersetzen Sie Stringzeichen in JavaScript Ersetzen Sie Stringzeichen in JavaScript Mar 11, 2025 am 12:07 AM

Detaillierte Erläuterung der Methode für JavaScript -Zeichenfolge und FAQ In diesem Artikel werden zwei Möglichkeiten untersucht, wie String -Zeichen in JavaScript ersetzt werden: Interner JavaScript -Code und interne HTML für Webseiten. Ersetzen Sie die Zeichenfolge im JavaScript -Code Die direkteste Möglichkeit ist die Verwendung der Ersatz () -Methode: str = str.replace ("find", "ersetzen"); Diese Methode ersetzt nur die erste Übereinstimmung. Um alle Übereinstimmungen zu ersetzen, verwenden Sie einen regulären Ausdruck und fügen Sie das globale Flag G hinzu:: STR = Str.Replace (/fi

8 atemberaubende JQuery -Seiten -Layout -Plugins 8 atemberaubende JQuery -Seiten -Layout -Plugins Mar 06, 2025 am 12:48 AM

Nutzen Sie JQuery für mühelose Webseiten -Layouts: 8 Essential Plugins JQuery vereinfacht das Webseitenlayout erheblich. In diesem Artikel werden acht leistungsstarke JQuery -Plugins hervorgehoben, die den Prozess optimieren, insbesondere nützlich für die manuelle Website -Erstellung

Erstellen Sie Ihre eigenen AJAX -Webanwendungen Erstellen Sie Ihre eigenen AJAX -Webanwendungen Mar 09, 2025 am 12:11 AM

Hier sind Sie also bereit, alles über dieses Ding namens Ajax zu lernen. Aber was genau ist das? Der Begriff AJAX bezieht sich auf eine lose Gruppierung von Technologien, mit denen dynamische, interaktive Webinhalte erstellt werden. Der Begriff Ajax, ursprünglich von Jesse J geprägt

10 Mobile Cheat Sheets für die mobile Entwicklung 10 Mobile Cheat Sheets für die mobile Entwicklung Mar 05, 2025 am 12:43 AM

Dieser Beitrag erstellt hilfreiche Cheat -Blätter, Referenzführer, schnelle Rezepte und Code -Snippets für die Entwicklung von Android-, Blackberry und iPhone -App. Kein Entwickler sollte ohne sie sein! Touch Gesten -Referenzhandbuch (PDF) Eine wertvolle Ressource für Desig

Verbessern Sie Ihr JQuery -Wissen mit dem Quell Betrachter Verbessern Sie Ihr JQuery -Wissen mit dem Quell Betrachter Mar 05, 2025 am 12:54 AM

JQuery ist ein großartiges JavaScript -Framework. Wie in jeder Bibliothek ist es jedoch manchmal notwendig, unter die Motorhaube zu gehen, um herauszufinden, was los ist. Vielleicht liegt es daran, dass Sie einen Fehler verfolgen oder nur neugierig darauf sind, wie JQuery eine bestimmte Benutzeroberfläche erreicht

Wie erstelle ich meine eigenen JavaScript -Bibliotheken? Wie erstelle ich meine eigenen JavaScript -Bibliotheken? Mar 18, 2025 pm 03:12 PM

In Artikel werden JavaScript -Bibliotheken erstellt, veröffentlicht und aufrechterhalten und konzentriert sich auf Planung, Entwicklung, Testen, Dokumentation und Werbestrategien.

10 JQuery Fun- und Games -Plugins 10 JQuery Fun- und Games -Plugins Mar 08, 2025 am 12:42 AM

10 Fun JQuery Game -Plugins, um Ihre Website attraktiver zu machen und die Stickinität der Benutzer zu verbessern! Während Flash immer noch die beste Software für die Entwicklung von lässigen Webspielen ist, kann JQuery auch überraschende Effekte erzielen und zwar nicht mit reinen Action -Flash -Spielen vergleichbar sind, aber in einigen Fällen können Sie auch einen unerwarteten Spaß in Ihrem Browser haben. JQuery Tic Toe Game Die "Hello World" der Game -Programmierung hat jetzt eine Jquery -Version. Quellcode JQuery Crazy Word Kompositionsspiel Dies ist ein Spiel mit der Füllung, und es kann einige seltsame Ergebnisse erzielen, da das Wort nicht kennt. Quellcode JQuery Mine Sweeping Game

JQuery Parallax Tutorial - Animated Header Hintergrund JQuery Parallax Tutorial - Animated Header Hintergrund Mar 08, 2025 am 12:39 AM

Dieses Tutorial zeigt, wie ein faszinierender Parallaxen -Hintergrundeffekt mit JQuery erstellt wird. Wir werden ein Header -Banner mit geschichteten Bildern bauen, die eine atemberaubende visuelle Tiefe erzeugen. Das aktualisierte Plugin funktioniert mit JQuery 1.6.4 und später. Laden Sie die herunter

See all articles