Heim > Web-Frontend > js-Tutorial > Hauptteil

Ein Artikel, in dem die verschiedenen Möglichkeiten zur Verwendung des Spread-Operators in JavaScript ausführlich erläutert werden

青灯夜游
Freigeben: 2022-10-17 19:56:22
nach vorne
2209 Leute haben es durchsucht

Dieser Artikel führt Sie durch die verschiedenen Arten der Verwendung von Spread-Operatoren in JavaScript sowie durch die Hauptunterschiede zwischen Spread-Operatoren und Rest-Operatoren. Ich hoffe, er wird Ihnen hilfreich sein!

Ein Artikel, in dem die verschiedenen Möglichkeiten zur Verwendung des Spread-Operators in JavaScript ausführlich erläutert werden

wird durch drei Punkte dargestellt ( ...). Der JavaScript-Spread-Operator wurde in ES6 eingeführt. Es kann verwendet werden, um Elemente in Sammlungen und Arrays in einzelne Einzelelemente zu erweitern. ...) 表示,JavaScript 扩展运算符是在 ES6 中引入的。它可用于将集合和数组中的元素扩展为单个单独的元素。

扩展运算符可用于创建和克隆数组和对象、将数组作为函数参数传递、从数组中删除重复项等等。

语法

扩展运算符只能用于可迭代对象。它必须在可迭代对象之前使用,没有任何分隔。例如:

console.log(...arr);
Nach dem Login kopieren

功能以及参数

以Math.min()方法为例。此方法接受至少一个数字作为参数,并返回传递的参数中最小的数字。

如果您有一个数字数组并且您想找到这些数字中的最小值,那么在没有展开运算符的情况下,您需要使用它们的索引一个一个地传递元素,或者使用apply()方法来传递数组作为参数。例如:

const numbers = [15, 13, 100, 20];
const minNumber = Math.min.apply(null, numbers);
console.log(minNumber); // 13
Nach dem Login kopieren

请注意,第一个参数是null,因为第一个参数用于更改this调用函数的值。

扩展运算符是将数组元素作为参数传递给函数的更方便和可读的解决方案。例如:

const numbers = [15, 13, 100, 20];
const minNumber = Math.min(...numbers);
console.log(numbers); // 13
Nach dem Login kopieren

创建数组

扩展运算符可用于从现有数组或其他包含Symbol.iterator()方法的可迭代对象创建新数组。这些是可以使用for...of循环迭代的对象。

例如,它可用于克隆数组。如果您只是将现有数组的值分配给新数组,则对新数组进行更改将更新现有数组:

const numbers = [15, 13, 100, 20];
const clonedNumbers = numbers;
clonedNumbers.push(24);
console.log(clonedNumbers); // [15, 13, 100, 20, 24]
console.log(numbers); // [15, 13, 100, 20, 24]
Nach dem Login kopieren

通过使用扩展运算符,可以将现有数组克隆到一个新数组中,并且对新数组所做的任何更改都不会影响现有数组:

const numbers = [15, 13, 100, 20];
const clonedNumbers = [...numbers];
clonedNumbers.push(24);
console.log(clonedNumbers); // [15, 13, 100, 20, 24]
console.log(numbers); // [15, 13, 100, 20]
Nach dem Login kopieren

应该注意的是,这只会克隆一维数组。它不适用于多维数组。

扩展运算符也可用于将多个数组连接为一个。例如:

const evenNumbers = [2, 4, 6, 8];
const oddNumbers = [1, 3, 5, 7];
const allNumbers = [...evenNumbers, ...oddNumbers];
console.log(...allNumbers); //[2, 4, 6, 8, 1, 3, 5, 7]
Nach dem Login kopieren

您还可以在字符串上使用扩展运算符来创建一个数组,其中每个项目都是字符串中的一个字符:

const str = 'Hello, World!';
const strArr = [...str];
console.log(strArr); // ['H', 'e', 'l', 'l', 'o', ',', ' ', 'W', 'o', 'r', 'l', 'd', '!']
Nach dem Login kopieren

创建对象

扩展运算符可以以不同的方式用于创建对象。

它可用于浅克隆另一个对象。例如:

const obj = { name: 'Mark', age: 20};
const clonedObj = { ...obj };
console.log(clonedObj); // {name: 'Mark', age: 20}
Nach dem Login kopieren

它还可以用于将多个对象合并为一个。例如:

const obj1 = { name: 'Mark', age: 20};
const obj2 = { occupation: 'Student' };
const clonedObj = { ...obj1, ...obj2 };
console.log(clonedObj); // {name: 'Mark', age: 20, occupation: 'Student'}
Nach dem Login kopieren

需要注意的是,如果对象共享相同的属性名称,将使用最后一个对象展开的值。例如:

const obj1 = { name: 'Mark', age: 20};
const obj2 = { age: 30 };
const clonedObj = { ...obj1, ...obj2 };
console.log(clonedObj); // {name: 'Mark', age: 30}
Nach dem Login kopieren

扩展运算符可用于从数组创建对象,其中数组中的索引成为属性,该索引处的值成为属性的值。例如:

const numbers = [15, 13, 100, 20];
const obj = { ...numbers };
console.log(obj); // {0: 15, 1: 13, 2: 100, 3: 20}
Nach dem Login kopieren

它还可以用于从字符串创建对象,其中,字符串中的索引成为属性,该索引处的字符成为属性的值。例如:

const str = 'Hello, World!';
const obj = { ...str };
console.log(obj); // {0: 'H', 1: 'e', 2: 'l', 3: 'l', 4: 'o', 5: ',', 6: ' ', 7: 'W', 8: 'o', 9: 'r', 10: 'l', 11: 'd', 12: '!'}
Nach dem Login kopieren

将 NodeList 转换为数组

NodeList是节点的集合,它们是文档中的元素。元素通过集合中的方法访问,例如itemor entries,与数组不同。

您可以使用扩展运算符将 NodeList 转换为 Array。例如:

const nodeList = document.querySelectorAll('div');
console.log(nodeList.item(0)); // <div>...</div>
const nodeArray = [...nodeList];
console.log(nodeList[0]); // <div>...</div>
Nach dem Login kopieren

从数组中删除重复项

Set对象是一个仅存储唯一值的集合。与 NodeList 类似,可以使用扩展运算符将 Set 转换为数组。

由于 Set 仅存储唯一值,因此可以将其与扩展运算符配对以从数组中删除重复项。例如:

const duplicatesArr = [1, 2, 3, 2, 1, 3];
const uniqueArr = [...new Set(duplicatesArr)];
console.log(duplicatesArr); // [1, 2, 3, 2, 1, 3]
console.log(uniqueArr); // [1, 2, 3]
Nach dem Login kopieren

扩展运算符与休息运算符

rest 运算符也是一个三点运算符 ( ...),但它用于不同的目的。rest 运算符可以在函数的参数列表中使用,表示该函数接受未定义数量的参数。这些参数可以作为数组处理。

例如:

function calculateSum(...funcArgs) {
  let sum = 0;
  for (const arg of funcArgs) {
    sum += arg;
  }

  return sum;
}
Nach dem Login kopieren

在此示例中,rest 运算符用作calculateSum函数的参数。然后,您循环遍历数组中的项目并将它们相加以计算它们的总和。

然后,您可以将变量一个一个地calculateSum

Der Spread-Operator kann zum Erstellen und Klonen von Arrays und Objekten, zum Übergeben von Arrays als Funktionsargumente, zum Entfernen von Duplikaten aus Arrays und mehr verwendet werden.

Syntax

Der Spread-Operator kann nur für iterierbare Objekte verwendet werden. Es muss ohne Trennung vor dem iterierbaren Objekt verwendet werden. Zum Beispiel:

console.log(calculateSum(1, 2, 3)); // 6
const numbers = [1, 2, 3];
console.log(calculateSum(...numbers)); // 6
Nach dem Login kopieren

🎜Funktion und Parameter🎜🎜🎜Nehmen Sie die Methode Math.min() als Beispiel. Diese Methode akzeptiert mindestens eine Zahl als Argument und gibt die kleinste Zahl unter den übergebenen Argumenten zurück. 🎜🎜Wenn Sie ein Array von Zahlen haben und das Minimum unter diesen Zahlen ermitteln möchten, müssen Sie ohne Spread-Operator die Elemente einzeln mithilfe ihres Index übergeben oder die Methode apply() verwenden, um das Array als Parameter zu übergeben. Zum Beispiel: 🎜rrreee🎜Bitte beachten Sie, dass der erste Parameter null ist, da der erste Parameter verwendet wird, um den Wert von this in der aufrufenden Funktion zu ändern. 🎜🎜Der Spread-Operator ist eine bequemere und lesbarere Lösung zum Übergeben von Array-Elementen als Argumente an Funktionen. Zum Beispiel: 🎜rrreee

🎜Array erstellen 🎜🎜🎜Der Spread-Operator kann verwendet werden, um ein neues Array aus einem vorhandenen Array oder einem anderen iterierbaren Objekt zu erstellen, das die Methode Symbol.iterator() enthält . Hierbei handelt es sich um Objekte, die mithilfe einer for...of-Schleife iteriert werden können. 🎜🎜Zum Beispiel kann es zum Klonen eines Arrays verwendet werden. Wenn Sie einfach die Werte eines vorhandenen Arrays einem neuen Array zuweisen, wird durch Änderungen am neuen Array das vorhandene Array aktualisiert: 🎜rrreee🎜 Mithilfe des Spread-Operators können Sie ein vorhandenes Array in ein neues Array klonen, und Aktualisieren Sie das neue Array. Alle am Array vorgenommenen Änderungen wirken sich nicht auf das vorhandene Array aus: 🎜rrreee🎜 Es ​​ist zu beachten, dass dadurch nur ein eindimensionales Array geklont wird. Es funktioniert nicht mit mehrdimensionalen Arrays. 🎜🎜Der Spread-Operator kann auch verwendet werden, um mehrere Arrays zu einem zu verketten. Zum Beispiel: 🎜rrreee🎜 Sie können den Spread-Operator auch für eine Zeichenfolge verwenden, um ein Array zu erstellen, in dem jedes Element ein Zeichen in der Zeichenfolge ist: 🎜rrreee

🎜Objekte erstellen 🎜🎜🎜 Der Spread-Operator kann auf unterschiedliche Weise zum Erstellen von Objekten verwendet werden. 🎜🎜Es kann zum flachen Klonen eines anderen Objekts verwendet werden. Zum Beispiel: 🎜rrreee🎜 Es ​​kann auch verwendet werden, um mehrere Objekte zu einem zusammenzuführen. Beispiel: 🎜rrreee🎜 Beachten Sie, dass bei Objekten mit demselben Eigenschaftsnamen der Wert des zuletzt erweiterten Objekts verwendet wird. Zum Beispiel: 🎜rrreee🎜Der Spread-Operator kann verwendet werden, um ein Objekt aus einem Array zu erstellen, wobei der Index im Array zur Eigenschaft und der Wert an diesem Index zum Wert der Eigenschaft wird. Zum Beispiel: 🎜rrreee🎜 Es ​​kann auch verwendet werden, um ein Objekt aus einer Zeichenfolge zu erstellen, wobei der Index in der Zeichenfolge zu einer Eigenschaft wird und das Zeichen an diesem Index zum Wert der Eigenschaft wird. Zum Beispiel: 🎜rrreee

🎜NodeList in Array konvertieren🎜🎜🎜NodeList ist eine Sammlung von Knoten, die Elemente im Dokument sind. Auf Elemente wird im Gegensatz zu Arrays über Methoden in der Sammlung zugegriffen, z. B. item oder entries. 🎜🎜Sie können NodeList mithilfe des Spread-Operators in ein Array konvertieren. Zum Beispiel: 🎜rrreee

🎜Duplikate aus einem Array entfernen🎜🎜🎜Set-Objekt ist eine Sammlung, die nur eindeutige Werte speichert. Ähnlich wie bei NodeList kann ein Set mithilfe des Spread-Operators in ein Array umgewandelt werden. 🎜🎜Da Set nur eindeutige Werte speichert, können Sie es mit dem Spread-Operator koppeln, um Duplikate aus einem Array zu entfernen. Zum Beispiel: 🎜rrreee

🎜Expand-Operator und Rest-Operator🎜🎜🎜Der Rest-Operator ist ebenfalls ein Dreipunktoperator (...), aber Es wird für unterschiedliche Zwecke verwendet. Der Restoperator kann in der Argumentliste einer Funktion verwendet werden, um anzugeben, dass die Funktion eine undefinierte Anzahl von Argumenten akzeptiert. Diese Parameter können als Arrays behandelt werden. 🎜🎜Zum Beispiel: 🎜rrreee🎜In diesem Beispiel wird der Rest-Operator als Argument für die Funktion calculateSum verwendet. Anschließend durchlaufen Sie die Elemente im Array und addieren sie, um ihre Summe zu berechnen. 🎜🎜Sie können dann die Variablen einzeln als Argumente an die Funktion calculateSum übergeben oder die Elemente des Arrays als Argumente mit dem Spread-Operator übergeben: 🎜rrreee🎜🎜Schlussfolgerung🎜🎜🎜Der Spread-Operator ermöglicht es Ihnen, mit weniger Codezeilen mehr zu erreichen und gleichzeitig die Lesbarkeit Ihres Codes zu gewährleisten. Es kann mit Iterables verwendet werden, um Argumente an Funktionen zu übergeben oder um Arrays und Objekte aus anderen Iterables zu erstellen. 🎜

【Verwandte Empfehlungen: Javascript-Video-Tutorial, Einfaches Programmiervideo

Das obige ist der detaillierte Inhalt vonEin Artikel, in dem die verschiedenen Möglichkeiten zur Verwendung des Spread-Operators in JavaScript ausführlich erläutert werden. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:juejin.cn
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!