Array学习第三天

99 阅读2分钟

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动

数组索引

数组中最后一个元素的索引始终是 length - 1,每次在数组最后一个元素后面新增一项,数组的 length 属性都会自动更新,例如:

let study = ["web", "java", "python"]; // 创建一个包含 3 个字符串的数组
study[99] = "test"; // 添加一种颜色(位置 88)
console.log(study.length); // 89

这里,study 数组有一个值被插入到位置 88,结果新 length 就变成了 89(88 + 1)。这中间的所有元素,即位置 3~87,实际上并不存在,因此在访问时会返回 undefined。

注意:数组最多可以包含 4294967295 个元素,如果尝试添加更多项,则会导致抛出错误。

检测数组

使用 instanceof 操作符:

if (value instanceof Array){
    // 操作数组
}

Array.isArray()方法:

if (Array.isArray(value)){
    // 操作数组
}

迭代器方法

ES6 中,Array有3个用于检索数组内容的方法:keys()、values()和entries()。

keys()返回数组索引的迭代器,values()返回数组元素的迭代器,entries()返回 索引/值对的迭代器,例如:

const study = ["web", "java", "python"];
// 因为这些方法都返回迭代器,所以可以将它们的内容
// 通过 Array.from()直接转换为数组实例
const stuKeys = Array.from(study.keys());
const stuValues = Array.from(study.values());
const stuEntries = Array.from(study.entries());
console.log(stuKeys); // [0, 1, 2]
console.log(stuValues); // ["web", "java", "python"]
console.log(stuEntries); // [[0, "web"], [1, "java"], [2, "python"]]

复制和填充方法

批量复制方法 copyWithin(),以及填充数组方法 fill()

使用 fill()方法可以向一个已有的数组中插入全部或部分相同的值。开始索引用于指定开始填充 的位置,它是可选的。如果不提供结束索引,则一直填充到数组末尾。负值索引从数组末尾开始计算。也可以将负索引想象成数组长度加上它得到的一个正索引:

const num = [1, 1, 1];
// 用 4 填充整个数组
num.fill(4);
console.log(num); // [4, 4, 4]
num.fill(0); // 重置
// 用 6 填充索引大于等于 3 的元素
num.fill(6, 3);
console.log(num); // [0, 0, 0, 6, 6]
num.fill(0); // 重置