如何在 JavaScript 中將 arguments 物件轉換為陣列?
本教程將教我們如何在 JavaScript 中將 **arguments 物件** 轉換為陣列。在我們繼續學習教程之前,讓我們先了解一下 arguments 物件。在 JavaScript 中,每個函式都包含一個 '**arguments**' 物件。它包含我們在呼叫或執行函式時傳遞的所有引數的值。
它非常類似於陣列,但它不是真正的陣列。
‘arguments’ 物件具有一個 **length** 屬性,我們可以使用它來了解在函式呼叫期間傳遞了多少個引數。
我們可以像訪問陣列索引屬性一樣訪問 'arguments' 物件的所有值。例如,**arguments[0]** 給出物件的第一個值,依此類推。
我們可以在 arguments 物件上使用 Array 方法,例如 **slicer()、forEach()、map()、filter()** 等。
因此,要將所有陣列方法應用於 arguments 物件,我們需要將其轉換為 JavaScript 陣列。
這裡,我們有不同的方法可以將 arguments 物件轉換為 JavaScript 陣列。
使用 Array.from() 方法
我們將在此方法中使用 **Array.from()** 方法。它將 JavaScript 中的可迭代物件或類陣列物件轉換為陣列。它會建立物件的副本並將其轉換為陣列。我們可以直接訪問轉換後的陣列,也可以將其儲存到另一個變數中。
語法
使用者可以按照以下語法將 arguments 物件轉換為陣列。
Array.from( arguments );
引數
**arguments** - 要轉換為陣列的 arguments 物件。
**返回值** - Array.form() 方法從 arguments 物件返回一個數組。
示例 1
以下示例演示瞭如何使用 Array.from() 方法將 arguments 物件轉換為陣列。
<html> <head> <title> Converting arguments Object to an array. </title> </head> <body> <h2>The Array.from() Method</h2> <p> The Array.from() method returns an array.</p> <p> Array created from arguments Object:</p> <p id="output"></p> <script > let outputDiv = document.getElementById("output"); function convertToArray() { // store the array of arguments object to resultantArray const resultantArray = Array.from(arguments); const mapArray = resultantArray.map((arg) => { return arg }); outputDiv.innerHTML = mapArray; } // call function by passing arguments convertToArray(10,20,30); </script> </body> </html>
在上面的程式碼中,使用者可以看到我們已將 10、20 和 30 作為函式的引數傳遞。在函式中,我們將 arguments 物件轉換為陣列,並使用轉換後的陣列的 map 函式來確保其正確轉換。
使用剩餘引數
**剩餘引數** 是 JavaScript 中在 **ES6** 中引入的語法。我們可以使用剩餘引數以陣列形式指定未知數量的引數。使用者只需在最後一個引數中使用 **展開運算子 (...)** 即可。
在我們的例子中,我們需要在第一個引數中指定展開運算子以獲取所有引數的陣列。
語法
使用者可以按照以下語法。
function demo( ...args ) { // function body } demo(1,3,5);
引數
**args** - 使用者可以使用任何變數名稱代替 args,但要訪問陣列中的引數,使用者需要在函式內部使用相同的陣列名稱。
**返回值** - 它將返回一個數組。當我們將剩餘引數傳遞給函式時,它會自動將引數物件轉換為陣列。
示例 2
以下示例演示瞭如何使用展開運算子將 arguments 物件轉換為陣列。
<html> <head> <title> Converting arguments Object to an array. </title> </head> <body> <h2>Rest Arguments: Converting arguments Object to an array.</h2> <p> A fucntion with rest paramters treats the arguments object as an array.</p> <p> Array created from arguments Object: </p> <p id="output"></p> <script> function convertToArray(...args) { document.getElementById("output").innerHTML = args; } // call function by passing arguments convertToArray("tutorials", "point", "simply", "easy", "learning"); </script> </body> </html>
使用者可以看到我們已使用展開運算子 (...) 將 arguments 物件轉換為陣列。
透過建立一個新陣列
在此方法中,我們將建立一個新陣列並將 arguments 物件的值分配給新陣列。如使用者所知,我們可以透過索引訪問 arguments 物件的值,這將幫助我們將值新增到新陣列中。
語法
使用者可以按照以下語法。
newArray[i] = arguments[i]
演算法
- **步驟 1** - 建立一個新的空陣列。
- **步驟 2** - 遍歷物件並逐個訪問物件的值,並將它們新增到陣列中。
- **步驟 3** - 我們已將 arguments 物件轉換為陣列,使用者可以使用所有陣列方法與新建立的陣列一起使用。
示例 3
以下示例演示瞭如何在 JavaScript 中不使用內建方法將 arguments 物件轉換為陣列。
<html> <body> <h2>Converting arguments Object to an array.</h2> <p> Newly created array after applying the sort() method: </p> <p id="result"> </p> <script> let resultDiv = document.getElementById("result"); function convertToArray() { // assign arguments values to the newArray const newArray = []; for (var i = 0; i < arguments.length; i++) { newArray[i] = arguments[i]; } // sort the newArray const sortedArray = newArray.sort((a, b) => a - b); resultDiv.innerHTML = sortedArray; } // call function by passing arguments convertToArray(1, 354, 23, 132, 64, 2, 7, 3, 8, 10); </script> </body> </html>
使用者可以檢視我們已手動將 arguments 物件轉換為陣列並對新建立的陣列進行排序,從而打印出上述輸出。
結論
在本教程中,我們介紹了三種將 arguments 物件轉換為陣列的方法。前兩種方法使用內建方法將物件轉換為陣列。在第三種方法中,我們手動將 arguments 物件轉換為陣列。最佳方法是使用者可以使用 **剩餘引數** 來執行上述操作。