JavaScript >> Javascript 文檔 >  >> JavaScript

如何在 JavaScript 中復制數組

由於數組在 JavaScript 中是類似集合的對象,所以不能簡單地使用等號運算符(= ) 複製值。它只會復制對原始對象的引用,而不是數組的元素。

在 vanilla JavaScript 中,有多種方法可以克隆數組的內容。您可以使用 Array.slice() 方法、Array.from() 方法或擴展運算符 (... ) 來複製一個數組。您不需要使用循環來遍歷數組的所有元素並將它們推送到另一個數組中。

Array.slice() 方法

將現有數組的內容複製到新數組中最簡單快捷的方法是使用不帶任何參數的 slice() 方法:

const fruits = ['🍑', '🍓', '🍉', '🍇', '🍒'];

// clone `fruits` using `slice()`
const moreFruits = fruits.slice();

console.log(moreFruits);

// ['🍑', '🍓', '🍉', '🍇', '🍒']

在上面的代碼中,slice() 方法創建一個淺層 原始數組的副本,而不是深度克隆。原始數組保持不變。如果原始數組包含對象,則只會將它們的引用複製到新數組中。

Array.from() 方法

在 JavaScript 中克隆數組的另一種方法是使用 Array.from() 方法。它創建了一個新的、淺拷貝的 Array 來自類似數組或可迭代對象的對象。

這是一個例子:

const fruits = ['🍑', '🍓', '🍉', '🍇', '🍒'];

// clone `fruits` using `Array.from()`
const moreFruits = Array.from(fruits);

Array.from() 方法是在 ES6 中引入的,所以它只適用於現代瀏覽器。但是您可以使用 polyfill 將瀏覽器支持方式推回 IE6。

擴展運算符

擴展運算符(... ) 是現代 JavaScript(ES6 及更高版本)中可用的另一個選項,可用於通過“傳播”其元素來克隆數組:

const fruits = ['🍑', '🍓', '🍉', '🍇', '🍒'];

// clone `fruits` using spread operator
const moreFruits = [...fruits];

就像 Array.slice() ,擴展運算符創建原始數組的淺表副本。克隆陣列時,它只會下降一級。如果要處理多維數組或包含對象的數組,則必須尋找其他替代方案。

Array.concat() 方法

雖然 Array.concat() 方法最初用於將兩個數組合併為一個,您也可以使用它來克隆數組:

const fruits = ['🍑', '🍓', '🍉', '🍇', '🍒'];

// merge `fruits` with emtpy array to 
// create a new array
const moreFruits = [].concat(fruits);

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


Tutorial JavaScript 教程
  1. EcmaScript 規範

  2. 使用中間件處理異步操作

  3. JavaScript 數據類型和使用 typeof 調試類型錯誤

  4. 構建我的第一個桌面應用程序:Electron 初步印象

  5. 如何計算兩個日期之間的天數

  6. 在 Flutter 中使用 FlutterGen 代碼生成器

  7. React 中的條件類名稱

  1. 如何使用 JSON 文件構建 RESTful Node.js API 服務器

  2. Node.js v4.2.1 發布摘要和統計

  3. 使用“mongoose-morgan”跟踪用戶行為和資源需求

  4. 使用 Swagger 和 Nest.js 將實時文檔添加到您的 REST API

  5. JavaScript 合併來自兩個不同函數的數組

  6. [提示] - 構建 React 架構的層

  7. 算法 101:FizzBu​​zz 一系列數字的 2 種方法

  1. 開發者 CMS - 開源無頭 cms

  2. 什麼是 Vuex?

  3. 如何關閉面具

  4. 在兩個頁面/選項卡之間進行通信