在 JavaScript 中將引數轉換為陣列

  1. 什麼是 JavaScript 中的 arguments 物件
  2. 在 JavaScript 中使用 rest 引數將 arguments 物件轉換為陣列
  3. 在 JavaScript 中使用 Array.from() 方法將 arguments 物件轉換為陣列
  4. 在 JavaScript 中使用陣列文字arguments 物件轉換為陣列

什麼是 JavaScript 中的 arguments 物件

arguments 是一個存在於每個函式中的物件。無論你在 JavaScript 中傳遞給函式的什麼引數,這些引數都以物件的形式儲存在此引數列表中。這個物件的鍵是從零開始的數字。要訪問 arguments 物件中存在的值,我們可以使用這些鍵。

這個 arguments 物件可以用作陣列,但它不支援 JavaScript 函式,如 forEachsortfiltermap。因此,如果你想將這些函式與引數物件一起使用,你必須將整個物件轉換為一個陣列。

arguments 物件可以通過多種不同的方式轉換為陣列。我們將關注最流行的方法,例如使用 rest 引數、array.from()array literals。讓我們詳細討論它們中的每一個。

在 JavaScript 中使用 rest 引數將 arguments 物件轉換為陣列

rest 引數允許函式接受可變數量的引數作為輸入。它由 ...args 表示。在這裡,代替 args,你可以給出任何名稱,三個點 ... 被稱為擴充套件運算子。

現在,每當你將 ...args 作為引數傳遞給函式時,這會將引數物件轉換為陣列,你現在可以使用名稱 args 訪問引數物件。

function func(...args) {
    console.log(args);
    console.log(args[0]);
}

func(1,2,3);

輸出:

[ 1, 2, 3 ]
1

在這個例子中,我們將引數 1,2,3 作為引數傳遞給函式 func()。由於我們使用了 rest 運算子,我們將以陣列的形式獲得 arguments 物件。我們現在可以在這個陣列上使用各種方法,比如排序或過濾。

在 JavaScript 中使用 Array.from() 方法將 arguments 物件轉換為陣列

另一種將引數物件轉換為陣列的方法是使用方法 Array.from()。在這裡,我們必須在 from() 方法中傳遞引數物件,從而為我們提供一個陣列。你可以將結果陣列儲存到變數中,甚至可以直接訪問該陣列中的元素。

function func() {
    console.log(Array.from(arguments));
    console.log(Array.from(arguments)[0]);
}

func(1,2,3);

輸出:

[ 1, 2, 3 ]
1

我們也採用了相同的示例,但唯一的區別是我們使用 Array.from() 並傳入 arguments 物件而不是使用 rest 運算子。你可以使用諸如 Array.from(arguments)[0] 之類的陣列索引來訪問各個元素。這將返回陣列的第一個元素。

在 JavaScript 中使用陣列文字arguments 物件轉換為陣列

array literals 是一個由零個或多個以索引號零開頭的元素組成的列表。在 array literals 中,元素包含在方括號 [] 內。在這裡,每個元素都可以藉助其索引號來訪問。

function func() {
    let args = [].slice.call(arguments);

    console.log(args);
    console.log(args[2]);
}

func(1,2,3);

輸出:

[ 1, 2, 3 ]
3

要將引數物件轉換為陣列,我們首先採用了一個空陣列。在該陣列上,我們使用 call() 方法呼叫 slice() 方法。現在 slice() 方法將遍歷傳遞的物件。在這種情況下,它是 arguments 物件,然後它將物件內的所有元素附加到空陣列中。最後,我們將把 this 的結果儲存在一個變數 args 中。

由於此變數現在包含 arguments 物件曾經包含的所有元素,因此你可以使用 args 變數訪問每個元素及其適當的索引號。

相關文章 - JavaScript Array

  • 在 JavaScript 中從陣列中刪除重複的內容
  • 在 JavaScript 中將陣列轉換為 JSON