javascript怎么创建数组

发布时间:2021-09-09 09:36:46 作者:小新
来源:亿速云 阅读:169
# 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中的集合数据。根据具体场景选择合适的方法,可以使代码更简洁且性能更优。 “`

推荐阅读:
  1. 使用JavaScript怎么批量创建数组
  2. JavaScript怎样创建字符串数组

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

javascript 数组

上一篇:php数组如何获取值

下一篇:怎么通过重启路由的方法切换IP地址

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》