如何在 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 物件轉換為陣列。最佳方法是使用者可以使用 **剩餘引數** 來執行上述操作。

更新於: 2022年7月12日

898 次檢視

開啟您的 職業生涯

透過完成課程獲得認證

開始學習
廣告