JS中数组的方方面面

63 阅读7分钟

简言:

数组在所有的汇编语言中应用十分广泛,然而数组的作用又有各种各样的方式方法。

数组在几乎所有计算机语言中都是至关重要的数据结构之一,其作用包括但不限于以下几个方面:

  1. 数据存储:数组用于存储多个相同类型或不同类型的数据元素。它们提供了一种有序、集合化的数据结构,可以按照索引访问和操作其中的元素。
  2. 数据处理:数组提供了各种方法和功能来处理数据,包括对元素的添加、删除、修改、排序、查找等操作,以及对数组进行遍历和迭代的能力。
  3. 数据结构实现:数组是许多其他数据结构的基础,例如栈(stack)、队列(queue)、堆(heap)等。这些数据结构可以使用数组来实现,从而实现不同的算法和应用。
  4. 算法实现:数组是许多算法的核心数据结构之一,包括排序算法、搜索算法、图算法等。通过数组,可以实现各种复杂的算法,从简单的线性搜索到复杂的图遍历和动态规划。
  5. 内存管理:在底层,数组的实现涉及到内存管理和分配。计算机语言中的数组通常在内存中是一段连续的存储空间,可以高效地进行访问和操作。
  6. 数据传递:数组作为一种通用的数据结构,经常用于在程序之间传递数据。它们可以作为函数参数或返回值,以便在不同的函数或模块之间传递和共享数据。

总的来说,数组在计算机编程中起着至关重要的作用,是实现各种算法和数据结构、处理数据、传递数据等方面的重要工具和基础。

正文

形成数组有以下几点要素:元素集合,索引,有限程度,连续内存空间,可变性。这些要素共同构成了数组这一重要的数据结构,为编程提供了强大的数据处理和存储能力。

1.当使用数组时,可以通过下标(索引)来访问数组中的元素。

// 创建一个包含一些数字的数组
let numbers = [10, 20, 30, 40, 50];

// 使用下标来访问数组中的元素
console.log(numbers[0]); // 输出: 10
console.log(numbers[2]); // 输出: 30
console.log(numbers[4]); // 输出: 50

// 修改数组中的元素
numbers[1] = 25;
console.log(numbers[1]); // 输出: 25

// 访问超出数组长度的索引会返回 undefined
console.log(numbers[5]); // 输出: undefined

在这个示例中,我们首先创建了一个包含一些数字的数组numbers。然后,我们使用方括号加上相应的索引来访问数组中的元素。例如,numbers[0]表示数组中的第一个元素,numbers[2]表示数组中的第三个元素。我们还展示了如何修改数组中的元素,以及当访问超出数组长度的索引时会返回undefined

2.尾部增加:Push, 尾部删除:pop ,头部增加:unshift , 头部删除:shift

// 创建一个包含一些元素的数组
let arr = [1, 2, 3, 4];

// 尾部增加元素
arr.push(5);
console.log(arr); // 输出: [1, 2, 3, 4, 5]

// 尾部删除元素
let poppedElement = arr.pop();
console.log(poppedElement); // 输出: 5
console.log(arr); // 输出: [1, 2, 3, 4]

// 头部增加元素
arr.unshift(0);
console.log(arr); // 输出: [0, 1, 2, 3, 4]

// 头部删除元素
let shiftedElement = arr.shift();
console.log(shiftedElement); // 输出: 0
console.log(arr); // 输出: [1, 2, 3, 4]

在这个示例中,我们首先创建了一个数组arr,然后依次演示了尾部增加、尾部删除、头部增加和头部删除操作。push()方法用于在数组尾部增加元素,pop()方法用于删除数组尾部的元素并返回被删除的元素,unshift()方法用于在数组头部增加元素,shift()方法用于删除数组头部的元素并返回被删除的元素。

3.任意位置删除:splice(i,len) 任意位置增加:splice(i,0,xxx)

// 创建一个包含一些元素的数组
let arr = [1, 2, 3, 4, 5];

// 任意位置删除元素
arr.splice(2, 1); // 从索引为2的位置开始,删除1个元素
console.log(arr); // 输出: [1, 2, 4, 5]

// 任意位置增加元素
arr.splice(2, 0, 3); // 从索引为2的位置开始,不删除元素,插入元素3
console.log(arr); // 输出: [1, 2, 3, 4, 5]

// 在任意位置增加多个元素
arr.splice(3, 0, 3.5, 4.5); // 从索引为3的位置开始,不删除元素,插入元素3.5和4.5
console.log(arr); // 输出: [1, 2, 3, 3.5, 4.5, 4, 5]

在这个示例中,我们首先创建了一个数组arr,然后演示了如何使用splice()方法在任意位置删除和增加元素。splice(2, 1)表示从索引为2的位置开始删除一个元素,splice(2, 0, 3)表示从索引为2的位置开始不删除元素,插入元素3,splice(3, 0, 3.5, 4.5)表示从索引为3的位置开始不删除元素,插入元素3.5和4.5。

4. 遍历数组:forEach

// 创建一个包含多个元素的数组
let arr = [1, 2, 3, 4, 5];

// 定义一个回调函数来处理每个元素
function processElement(element, index, array) {
    console.log("Processing element at index " + index + ": " + element);

    // 修改元素的值
    array[index] = element * 2;
}

// 使用 forEach 方法遍历数组,传入回调函数作为参数
arr.forEach(processElement);

// 打印修改后的数组
console.log("Modified array:", arr);

在这个示例中,我们首先创建了一个数组 arr,然后定义了一个名为 processElement 的函数,该函数用于处理遍历数组时的每个元素。在 processElement 函数中,我们首先打印了当前元素和索引,然后将每个元素的值都乘以 2,实现了修改操作。最后,我们使用数组的 forEach() 方法,并将 processElement 函数作为参数传入,以实现对数组的遍历操作。

5.判断数组中是否存在某个值:indexOf lastIndexOf includes

// 创建一个包含一些元素的数组
let arr = [1, 2, 3, 4, 5];

// 使用 indexOf() 方法判断数组中是否存在某个值
let index1 = arr.indexOf(3);
if (index1 !== -1) {
    console.log("数组中存在值 3,首次出现位置为:" + index1);
} else {
    console.log("数组中不存在值 3");
}

let index2 = arr.indexOf(6);
if (index2 !== -1) {
    console.log("数组中存在值 6,首次出现位置为:" + index2);
} else {
    console.log("数组中不存在值 6");
}

// 使用 lastIndexOf() 方法判断数组中是否存在某个值
let lastIndex1 = arr.lastIndexOf(2);
if (lastIndex1 !== -1) {
    console.log("数组中存在值 2,最后出现位置为:" + lastIndex1);
} else {
    console.log("数组中不存在值 2");
}

let lastIndex2 = arr.lastIndexOf(6);
if (lastIndex2 !== -1) {
    console.log("数组中存在值 6,最后出现位置为:" + lastIndex2);
} else {
    console.log("数组中不存在值 6");
}

// 使用 includes() 方法判断数组中是否存在某个值
let exists1 = arr.includes(4);
if (exists1) {
    console.log("数组中存在值 4");
} else {
    console.log("数组中不存在值 4");
}

let exists2 = arr.includes(6);
if (exists2) {
    console.log("数组中存在值 6");
} else {
    console.log("数组中不存在值 6");
}

在这个示例中,我们首先创建了一个数组 arr,然后分别使用 indexOf()lastIndexOf()includes() 方法来判断数组中是否存在特定的值。对于每个方法,我们都提供了一个存在和一个不存在的值作为示例,并根据返回值输出相应的结果。

6.传递数组给函数

function processArray(array) {
    for (let i = 0; i < array.length; i++) {
        console.log(array[i]);
    }
}

let arr = [1, 2, 3, 4, 5];
processArray(arr); // 将数组 arr 传递给函数 processArray

可以将数组作为参数传递给函数,以便在函数内部进行处理。

总结

还有一些其他的函数日后会继续更新,目前掌握基本的数组用法也是很有必要的!