JavaScript索引集合

原创
admin 4个月前 (08-19) 阅读数 19 #JavaScript

索引集合

索引集合是按索引值排序的数据集合,包括数组和类数组结构,如Array对象和TypedArray对象。数组是由名称和索引引用的值构成的有序列表。

在JavaScript中,虽然没有明确的数组数据类型,但我们可以使用预定义的Array对象及其方法来处理数组。Array对象提供了多种操作数组的方法,如连接、反转和排序等,并具有用于确定数组长度的属性。

创建数组

JavaScript提供了多种创建数组的方式:

const arr1 = new Array(element0, element1, /* … ,*/ elementN);
const arr2 = Array(element0, element1, /* … ,*/ elementN);
const arr3 = [element0, element1, /* … ,*/ elementN];

其中,括号语法称为"数组字面量"或"数组初始化式",是最常用的创建数组的方式。

引用数组元素

数组元素可以通过索引来访问,索引从0开始。例如,对于数组myArray = ["Wind", "Rain", "Fire"],第一个元素可以通过myArray[0]来引用。

填充数组

可以通过给数组元素赋值来填充数组,例如:

const emp = [];
emp[0] = "Casey Jones";
emp[1] = "Phil Lesh";
emp[2] = "August West";

也可以在创建数组时直接初始化其元素。

理解length属性

JavaScript数组的length属性是特殊的,它总是比最后一个元素的索引大1。例如:

const cats = [];
cats[30] = ["Dusty"];
console.log(cats.length); // 31

可以通过修改length属性来截断或清空数组。

遍历数组

遍历数组是常见的操作,可以使用for循环或forEach方法:

const colors = ["red", "green", "blue"];
for (let i = 0; i < colors.length; i++) {
  console.log(colors[i]);
}

colors.forEach((color) => console.log(color));

数组方法

Array对象提供了丰富的方法来操作数组:

  • concat() - 连接两个或多个数组
  • join() - 将数组元素连接成字符串
  • push() - 在数组末尾添加元素
  • pop() - 移除数组最后一个元素
  • shift() - 移除数组第一个元素
  • unshift() - 在数组开头添加元素
  • slice() - 提取数组片段
  • splice() - 删除或替换数组元素
  • reverse() - 颠倒数组顺序
  • sort() - 对数组元素排序
  • indexOf() - 查找元素索引
  • forEach() - 遍历数组元素
  • map() - 创建新数组
  • filter() - 过滤数组元素
  • find() - 查找匹配元素
  • reduce() - 将数组元素减少为单个值

稀疏数组

稀疏数组包含"空槽",这与用undefined填充的槽不同。空槽可以通过多种方式创建,如使用Array构造函数、在数组字面量中使用连续逗号等。

多维数组

JavaScript数组可以嵌套,从而创建多维数组。例如,以下代码创建了一个二维数组:

const a = new Array(4);
for (i = 0; i < 4; i++) {
  a[i] = new Array(4);
  for (j = 0; j < 4; j++) {
    a[i][j] = "[" + i + "," + j + "]";
  }
}

使用数组存储其他属性

数组也可以像对象一样使用,存储额外的属性:

const arr = [1, 2, 3];
arr.property = "value";
console.log(arr.property); // "value"

使用类数组对象

一些JavaScript对象,如NodeList或arguments对象,具有类似数组的行为但不共享所有数组方法。可以通过Function.prototype.call()间接调用数组方法:

function printArguments() {
  Array.prototype.forEach.call(arguments, (item) => {
    console.log(item);
  });
}
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权本站发表,未经许可,不得转载。

作者文章
热门
最新文章
标签列表