如何在JavaScript中将arguments对象转换为数组?


本教程将教你如何将JavaScript中的arguments对象转换为数组。在开始教程之前,让我们先了解一下arguments对象。在JavaScript中,每个函数都包含一个'arguments'对象。它包含调用或执行函数时传递的所有参数的值。

它与数组非常相似,但它并非真正的数组。

  • ‘arguments’对象具有一个length属性,我们可以用它来了解在函数调用期间传递了多少个参数。

  • 我们可以像访问数组索引属性一样访问‘arguments’对象的所有值。例如,arguments[0]给出对象的第一个值,依此类推。

  • 我们可以对arguments对象使用数组方法,例如slice()、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对象的 value 赋值给新数组。正如用户所知,我们可以通过索引访问arguments对象的value,这将帮助我们将value添加到新数组中。

语法

用户可以按照以下语法操作。

newArray[i] = arguments[i]

算法

  • 步骤1 − 创建一个新的空数组。
  • 步骤2 − 遍历对象并逐个访问对象的value,并将它们添加到数组中。
  • 步骤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日

899 次浏览

启动你的职业生涯

通过完成课程获得认证

开始学习
广告
© . All rights reserved.