JS集合引用类型之 Array

Array

一、创建数组

1、使用Array构建函数

let colors = new Array();
// 创建一个初始length为20的数组
let arr = new Array(20);
// 传入要保存的数组元素
let arr1 = new Array('red', '1', 1);

2、省略new操作符,结果一致

let arr = Array(2);

3、数组字面量(不会调用Array构造函数)

let arr = ['red', 'green', 'white'];
let arr1 = [];
let arr2 = [1, 2];
二、from()和of()方法

ES6新增的用于创建数组的静态方法
from(): 将类数组结构转换为数组实例
of(): 将一组参数转换为数组实例
场合

from

1、字符串拆分成数组

Arrar.from('zdx');       // ['z', 'd', 'x']

2、将集合和映射转换为一个新数组

const m = new Map().set(1, 2).set(3, 4);
const n = new Set().add(1).add(2).add(3).add(4);
Array.from(m);           //[[1,2],[3,4]]
Array.from(n);           //[1,2,3,4]

3、对数组浅复制

const a1 = [1, 2, 3, 4];
const a2 = Array.from(a1);
console.log(a1);           // [1, 2, 3, 4]
alert(a1 === a2);          // false 

4、可以使用任何可迭代对象

const iter = {
 *[Symbol.iterator]() {
 yield 1;
 yield 2;
 yield 3;
 yield 4;
 }
};
console.log(Array.from(iter)); // [1, 2, 3, 4]

5、对象轻松地转换为数组

function getArgsArray() {
  return Array.from(arguments);
}
console.log(getArgsArray(1, 2, 3, 4))    //[1, 2, 3, 4]
of

将一组参数转换为数组

Array.of(1,2,3,4)   // [1,2,3,4]
Array.of(undefined)  // [undefined]
三、数组空位
const options = [,,,,,];    // 创建包含 5 个元素的数组

注意:由于行为不一致和存在性能隐患,因此实践中要避免使用数组空位。如果确实需要
空位,则可以显式地用 undefined 值代替。

四、数组索引

数组 length 属性的独特之处在于,它不是只读的。通过修改 length 属性,可以从数组末尾删除或添加元素:

let colors = ["red", "blue", "green"]; // 创建一个包含 3 个字符串的数组
colors.length = 2;
alert(colors[2]); // undefined

使用length属性也可以方便地向数组末尾添加元素,如

let colors = ["red", "blue", "green"]; // 创建一个包含 3 个字符串的数组
colors[colors.length] = "black"; // 添加一种颜色(位置 3)
colors[colors.length] = "brown"; // 再添加一种颜色(位置 4)

数组中最后一个元素的索引始终是 length - 1,因此下一个新增槽位的索引就是 length。
新的长度会在新增元素被添加到当前数组外部的位置上时自动更新。换句话说,就是 length 属性会更新为位置加上 1。

let colors = ["red", "blue", "green"]; // 创建一个包含 3 个字符串的数组
colors[99] = "black"; // 添加一种颜色(位置 99)
alert(colors.length); // 100 

在这里插入图片描述

五、检测数组

1、value instanceof Array
2、Array.isArray(value)

六、迭代器方法

在Array原型上暴露了3个用于检索数组内容的方法:key()values()entries()
key() 返回数组索引的迭代器;
value() 返回数组元素的迭代器;
entries() 返回数组索引,元素的迭代器;
eg:

const a1 = ["foo", "bar", "baz", "qux"];
a1.keys();

在这里插入图片描述

const a = ["foo", "bar", "baz", "qux"];
Array.from(a.key());     // [1, 2, 3, 4]
Array.from(a.values());    // ["foo", "bar", "baz", "qux"]
Array.from(a.entries());   

在这里插入图片描述

七、复制和填充方法

fill():填充数组,向一个已有的数组中插入全部或部分相同的值,开始索引用于指定开始填充的位置。
第二个参数:开始填充位置;
第三个参数:结束填充位置;

const zeroes = [0, 0, 0, 0, 0];
zeroes.fill(5);        // [5, 5, 5, 5, 5]
zeroes.fill(6, 3);       // [5, 5, 5, 6, 6]    
zeroes.fill(0); 
zeroes.fill(6, 1, 3);       // [0, 6, 6, 0, 0]  

copyWithin():批量复制,从第几个开始复制,替换掉后面的

let arr =  [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
arr.copyWithin(5)        //[0, 1, 2, 3, 4, 0, 1, 2, 3, 4]

也可以指定从数组的第几个到第几个

let arr =  [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
arr.copyWithin(4, 0, 3)     // [0, 1, 2, 3, 0, 1, 2, 7, 8, 9]

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值