【js版数据结构学习之数组】

发布时间:2024年01月18日

一、创建数组

1.直接使用 [] 的方式

// 创建一个空数组
let arr1 = []

// 创建一个有内容的数组
let arr2 = [1, 2, 3]

2.使用 js的内置构造函数 Array

// 创建一个空数组
let arr1 = new Array()

// 创建一个长度为 10 的数组
let arr2 = new Array(10)

// 创建一个有内容的数组
let arr3 = new Array(1, 2, 3)

二、数组的长度:数组名.length

三、数组的索引:数组[索引值]

四、数组的方法

巧计增删元素:
p开头:prior 在前面所以在数组的前面进行增添和删除

1.push

  • push 是用来在数组的末尾追加一个元素

    let arr = [1, 2, 3]
    
    // 使用 push 方法追加一个元素在末尾
    arr.push(4)
    
    console.log(arr) // [1, 2, 3, 4]
    

2.pop

  • pop 是用来删除数组末尾的一个元素

    let arr = [1, 2, 3]
    
    // 使用 pop 方法删除末尾的一个元素
    arr.pop()
    
    console.log(arr) // [1, 2]
    

3.unshift

  • unshift 是在数组的最前面添加一个元素

    let arr = [1, 2, 3]
    
    // 使用 unshift 方法想数组的最前面添加一个元素
    arr.unshift(4)
    
    console.log(arr) // [4, 1, 2, 3]
    

4.shift

  • shift 是删除数组最前面的一个元素

    let arr = [1, 2, 3]
    
    // 使用 shift 方法删除数组最前面的一个元素
    arr.shift()
    
    console.log(arr) // [2, 3]
    

5.slice

语法:array.slice(start, end)
array:要操作的原始数组。
start:可选参数,表示开始提取元素的位置。如果省略了 start,则 slice() 从索引 0 开始提取。
end:可选参数,表示结束提取元素的位置(但不包括该位置的元素)。如果省略了 end,则 slice() 会提取到原始数组的末尾。

6.splice

  • splice 是截取数组中的某些内容,按照数组的索引来截取

  • 语法: splice(从哪一个索引位置开始,截取多少个,替换的新元素) (第三个参数可不写)

    let arr = [1, 2, 3, 4, 5]
    
    // 使用 splice 方法截取数组
    arr.splice(1, 2)
    
    console.log(arr) // [1, 4, 5]
    
    • arr.splice(1, 2) 表示从索引 1 开始截取 2 个内容
    • 第三个参数没有写,就是没有新内容替换掉截取位置
    let arr = [1, 2, 3, 4, 5]
    
    // 使用 splice 方法截取数组
    arr.splice(1, 2, 'new')
    
    console.log(arr) // [1, 'new', 4, 5]
    
    • arr.splice(1, 2, 'new') 表示从索引 1 开始截取 2 个内容
    • 然后用第三个参数把截取完空出来的位置填充

7.reverse

  • reverse 是用来反转数组使用的

    let arr = [1, 2, 3]
    
    // 使用 reverse 方法来反转数组
    arr.reverse()
    
    console.log(arr) // [3, 2, 1]
    

8.sort

  • sort 是用来给数组排序的

    let arr = [2, 3, 1]
    
    // 使用 sort 方法给数组排序
    arr.sort()
    
    console.log(arr) // [1, 2, 3]
    
    • 这个只是一个基本的简单用法

9.concat

  • concat 是把多个数组进行拼接

  • 和之前的方法有一些不一样的地方,就是 concat 不会改变原始数组,而是返回一个的数组

    let arr = [1, 2, 3]
    
    // 使用 concat 方法拼接数组
    let newArr = arr.concat([4, 5, 6])
    
    console.log(arr) // [1, 2, 3]
    console.log(newArr) // [1, 2, 3, 4, 5, 6]
    
    • 注意: concat 方法不会改变原始数组

10.join

  • join 是把数组里面的每一项内容链接起来,变成一个字符串

  • 可以自己定义每一项之间链接的内容 join(要以什么内容链接)

  • 不会改变原始数组,而是把链接好的字符串返回

    let arr = [1, 2, 3]
    
    // 使用 join 链接数组
    let str = arr.join('-')
    
    console.log(arr) // [1, 2, 3]
    console.log(str) // 1-2-3
    
    • 注意: join 方法不会改变原始数组,而是返回链接好的字符串

11.indexOf

  • indexOf 用来找到数组中某一项的索引

  • 语法: indexOf(你要找的数组中的项)

    let arr = [1, 2, 3, 4, 5]
    
    // 使用 indexOf 超找数组中的某一项
    let index = arr.indexOf(3)
    
    console.log(index) // 2
    
    • 我们要找的是数组中值为 3 的那一项
    • 返回的就是值为 3 的那一项在该数组中的索引
    • 如果你要找的内容在数组中没有,那么就会返回 -1
    • 你要找的值在数组中不存在,那么就会返回 -1

12.forEach

  • for 循环一个作用,就是用来遍历数组的

  • 语法:arr.forEach(function (item, index, arr) {})

    let arr = [1, 2, 3]
    
    // 使用 forEach 遍历数组
    arr.forEach(function (item, index, arr) {
      // item 就是数组中的每一项
      // index 就是数组的索引
      // arr 就是原始数组
      console.log('数组的第 ' + index + ' 项的值是 ' + item + ',原始数组是', arr)
    })
    
    • forEach() 的时候传递的那个函数,会根据数组的长度执行
    • 数组的长度是多少,这个函数就会执行多少回

13.map

  • forEach 类似,只不过可以对数组中的每一项进行操作,返回一个新的数组

    let arr = [1, 2, 3]
    
    // 使用 map 遍历数组
    let newArr = arr.map(function (item, index, arr) {
      // item 就是数组中的每一项
      // index 就是数组的索引
      // arr 就是原始数组
      return item + 10
    })
    
    console.log(newArr) // [11, 12, 13]
    

14.filter

  • map 的使用方式类似,按照我们的条件来筛选数组

  • 把原始数组中满足条件的筛选出来,组成一个新的数组返回

    let arr = [1, 2, 3]
    
    // 使用 filter 过滤数组
    let newArr = arr.filter(function (item, index, arr) {
      // item 就是数组中的每一项
      // index 就是数组的索引
      // arr 就是原始数组
      return item > 1
    })
    
    console.log(newArr) // [2, 3]
    
    • 我们设置的条件就是 > 1
    • 返回的新数组就会是原始数组中所有 > 1 的项

15.reduce

它可以帮助我们对数组进行迭代,并将每个元素进行指定的操作,最终将它们合并成一个单一的值。
假设我们有一个数组 numbers,里面包含着一些数字:[1, 2, 3, 4, 5]。现在我们想要计算这些数字的总和。

我们可以使用reduce()函数来实现这个目标。具体的代码如下:

const numbers = [1, 2, 3, 4, 5];

const total = numbers.reduce((sum, item) => {
return sum + item;
}, 0);


console.log(total); // 输出:15

再比如,这是一个实现比较大小值返回最大值的例子:

const array = [5, 8, 2, 10, 3];
const max = array.reduce((a, b) => Math.max(a, b));
console.log(max); // 输出10

16.find

数组的find方法用于查找数组中满足指定条件的第一个元素,并返回该元素的值。如果找到匹配的元素,则返回该元素的值;如果没有找到匹配的元素,则返回undefined。
语法:

array.find(function(currentValue, index, arr), thisValue)

function:指定用来测试每个元素的函数,这个函数接收三个参数:
currentValue:当前元素的值。
index:当前元素的索引。
arr:当前数组对象。
thisValue (可选):传递给函数的值被用作 “this” 的值。
例子:

let numbers = [5, 12, 8, 130, 44];

let found = numbers.find(function(element) {
 return element > 10;
});

console.log(found); // 输出12

17.every

数组的every方法用于检测数组中的所有元素是否都满足指定条件。它会对数组中的每个元素调用一个提供的测试函数,直到找到一个使测试函数返回false的元素,或者遍历完整个数组。

array.every(function(currentValue, index, arr), thisValue)

function:指定用来测试每个元素的函数,这个函数接收三个参数:
currentValue:当前元素的值。
index:当前元素的索引。
arr:当前数组对象。
thisValue (可选):传递给函数的值被用作 “this” 的值。

let numbers = [1, 2, 3, 4, 5];

let allPositive = numbers.every(function(element) {
 return element > 0;
});

console.log(allPositive); // 输出true

18.flat

flat() 方法接受一个可选参数 depth,用于指定要展平的层数。如果不传递该参数,则默认为 1,即只展平第一层嵌套的数组。如果传递了Infinity,则会展平所有嵌套的数组。

const arr1 = [1, 2, [3, 4]];
const arr2 = [1, 2, [3, [4]]];
const arr3 = [1, 2, [3, [4]]];

arr1.flat(); // [1, 2, 3, 4]
arr2.flat(); // [1, 2, 3, [4]]
arr2.flat(2); // [1, 2, 3, 4]
arr3.flat(Infinity); // [1, 2, 3, 4]

需要注意的是,flat() 方法只能展平数组类型的元素。如果数组中包含非数组类型的元素,这些元素会被保留在结果数组中,不会被展平

文章来源:https://blog.csdn.net/m0_75134766/article/details/135604030
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。