溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

javascript怎么創建數組

發布時間:2021-09-09 09:36:46 來源:億速云 閱讀:179 作者:小新 欄目:web開發
# JavaScript怎么創建數組

數組是JavaScript中最基礎且強大的數據結構之一,用于存儲有序的元素集合。本文將詳細介紹7種創建數組的方法,并分析它們的適用場景和注意事項。

## 1. 數組字面量(最常用)

```javascript
// 空數組
const arr1 = []; 

// 帶初始值的數組
const arr2 = [1, 'text', true, {name: 'John'}];

// 多維數組
const matrix = [
  [1, 2, 3],
  [4, 5, 6]
];

特點: - 簡潔直觀,90%場景的首選 - 可包含任意數據類型 - 推薦使用const聲明避免意外修改

2. Array構造函數

// 創建空數組(等效于[])
const arr1 = new Array();

// 創建指定長度的空數組
const arr2 = new Array(5); // [empty × 5]

// 創建帶元素的數組
const arr3 = new Array(1, 2, 3); // [1, 2, 3]

注意事項: - 單數字參數會創建空槽數組而非[5] - 可讀性較差,現代代碼中較少使用 - 可能被誤用導致意外行為

3. Array.of()方法(ES6)

const arr1 = Array.of(5);    // [5]
const arr2 = Array.of(1,2,3); // [1,2,3]

優勢: - 解決構造函數的單參數陷阱 - 語義更明確 - 適合需要明確區分長度和元素的場景

4. Array.from()方法(ES6)

// 從類數組對象轉換
const strArr = Array.from('hello'); // ['h','e','l','l','o']

// 從Set轉換
const set = new Set([1,2,3]);
const setArr = Array.from(set); // [1,2,3]

// 帶映射函數
const doubled = Array.from([1,2,3], x => x*2); // [2,4,6]

典型應用場景: - DOM節點集合轉換:Array.from(document.querySelectorAll('div')) - 函數arguments對象轉換 - 任何實現了iterable協議的對象

5. 使用擴展運算符(ES6)

// 合并數組
const arr1 = [1, 2];
const arr2 = [...arr1, 3, 4]; // [1,2,3,4]

// 轉換可迭代對象
const strArr = [...'hello']; // ['h','e','l','l','o']

// 復制數組(淺拷貝)
const original = [1,2,3];
const copy = [...original];

優勢: - 語法簡潔 - 支持任何可迭代對象 - 適合數組淺拷貝和合并操作

6. 使用fill()方法創建初始化數組

// 創建并填充5個0的數組
const zeros = new Array(5).fill(0); // [0,0,0,0,0]

// 填充對象需要注意引用問題
const objArr = new Array(3).fill({}); // 三個元素指向同一對象

注意事項: - 對于引用類型會填充相同引用 - 適合初始化基本類型數組 - 常與Array(n)結合使用

7. 特殊數組創建方法

7.1 使用keys()/values()/entries()

const indexArr = [...Array(5).keys()]; // [0,1,2,3,4]

7.2 使用Array.from的length屬性

const seq = Array.from({length: 5}, (_,i) => i+1); // [1,2,3,4,5]

7.3 生成范圍數組

function range(start, end) {
  return Array.from({length: end-start+1}, (_,i) => start+i);
}
range(3,7); // [3,4,5,6,7]

性能比較(V8引擎)

方法 創建耗時(100萬次)
字面量 [] 15ms
Array(n) 20ms
Array.of() 25ms
Array.from() 120ms

最佳實踐建議

  1. 優先使用字面量語法[]在大多數情況下都是最佳選擇
  2. 需要固定長度時new Array(n).fill(value)
  3. 轉換類數組對象時Array.from()或擴展運算符
  4. 避免構造函數陷阱:使用Array.of()替代new Array()
  5. 大型數組初始化:考慮先創建后填充的方式

常見問題解答

Q:new Array(5)[undefined,undefined,undefined]的區別? A:前者創建的是空槽數組(sparse array),后者是實際包含undefined值的數組。map()等方法會跳過空槽。

Q:如何檢測數組? A:使用Array.isArray(arr),比instanceof更可靠。

Q:如何創建不重復的隨機數數組?

const uniqueRandom = Array.from({length: 10}, () => 
  Math.floor(Math.random()*100)).filter((v,i,a) => a.indexOf(v) === i);

掌握這些數組創建方法,將幫助你更高效地處理JavaScript中的集合數據。根據具體場景選擇合適的方法,可以使代碼更簡潔且性能更優。 “`

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女