JavaScript >> Javascript 文檔 >  >> Tags >> object

如何在 JavaScript 中將參數對象轉換為數組

arguments object 是一個類數組對象,可在所有非箭頭函數中訪問,表示傳遞給該函數的參數值。您可以使用數字索引來訪問 arguments 中的參數值 目的。例如,第一個參數可以訪問為 arguments[0] ,第二個參數可以訪問為 arguments[1] ,等等。

你可以看到 arguments object 很像一個數組,但它不是一個實際的數組。雖然它有 length 屬性,你不能使用像 map() 這樣的普通數組方法 , slice() , 和 filter() 就可以了。

轉換 arguments 反對真正的 Array 對象,我們將在下面討論幾種可用的方法。

休息參數

ES6 中引入了 rest 參數語法,它允許我們將未指定數量的參數表示為數組。要使用剩餘參數,您可以在函數的最後一個參數前面加上 ... (擴展運算符)。它將所有剩餘的用戶提供的參數轉換為標準的 JavaScript 數組。

由於其餘參數是真正的 Array 例如,不像 arguments 對象,您不需要執行任何轉換:

const sort = (...numbers) => {
    return numbers.sort((a, b) => a - b);
};

sort(1, 4, 5, 2);

// [ 1, 2, 4, 5 ]

Array.from()

另一種轉換 arguments 的方法 ES6 中的數組對像是使用 Array.from() 方法。此方法將類數組或可迭代對象轉換為 Array 實例:

function sort() {
    return Array.from(arguments).sort((a, b) => a - b);
}

sort(1, 4, 5, 2);

// [ 1, 2, 4, 5 ]

Array.prototype.slice()

最後,最後一個轉換arguments的方法 對像到數組是通過使用 Array.prototype.slice() 方法。就像將 NodeList 轉換為數組一樣,Arrayslice() 方法接受 arguments 對象並將其轉換為真正的數組:

function sort() {
    const args = Array.prototype.slice.call(arguments);
    return args.sort((a, b) => a - b);
}

const sorted = sort(1, 4, 5, 2);

console.log(sorted);

// [ 1, 2, 4, 5 ]

您還可以使用 slice() 的簡潔形式 方法:

const args = [].slice.call(arguments);

Array.prototype.slice.call() 適用於所有現代和舊瀏覽器,包括 IE 6+。如果你想支持舊的瀏覽器,你應該使用這種方法。

要了解有關 JavaScript 數組以及如何使用它們將多條信息存儲在一個變量中的更多信息,請查看本指南。


Tutorial JavaScript 教程
  1. TypeScript Types Explained – 一個幫助你思考類型的心智模型

  2. 使用 Vigenère Cipher 使用 Javascript 加密消息

  3. 在瀏覽器中使用 JavaScript 刪除鏈接

  4. Web 組件介紹🎧

  5. 我們 REST 的身份驗證

  6. 使用 OneSignal 在 ReactJS 中推送通知

  7. 在 Nodejs 和 Angular10 中構建購物車

  1. 編寫你的第一個 React 鉤子

  2. 將暗模式添加到 ElderJS 站點

  3. Vue Quick Shot - 鏈接、鏈接和更多鏈接

  4. 構建令人興奮的閃電般快速的 Web 應用程序 | PWA 的原因和方法指南。

  5. LeetCode 300. 最長遞增子序列(javascript 解法)

  6. 有趣的實驗:為 JS 帶來延遲執行!

  7. 如何使用純 Javascript 延遲加載 html 中的圖像?

  1. Javascript:移動一個 DIV 並檢測它何時完全在另一個 DIV 中?

  2. 事件循環和隊列

  3. Jotai,現在與光學

  4. 你有沒有想過,“nodemon”在內部是如何工作的?讓我們在 10 分鐘內構建我們自己的“nodemon”!