数组

简介: 数组

几乎所有的编程语言都支持数组类型,因为数组是最简单的内存数据结构。

创建数组

let arr = new Array()
let arr2 = new Arrya(2)
let arr3 = new Arrya(1, 2, 4)
let arr4 = []
let arr5 = [1, 2, 4]

求斐波那契数列前20个数字

let fibonacci = []
fibonacci[1] = 1
fibonacci[2] = 2
for (let i = 3; i < 20; i++) {
  fibonacci[i] = fibonacci[i - 1] + fibonacci[i - 2]
}
console.log(fibonacci)

添加元素

Array.push()

let numbers = [0, 1, 2]
numbers.push(3, 4)

插入元素到数组首位

Array.unshift()

numbers.unshift(-2)

删除数组

删除数组最后的一个元素

Array.pop()

删除数组第一个元素

Array.shift()

指定位置添加或删除元素

Array.splice()

删除从数组索引1开始的2个元素

numbers.splice(1, 2)

从索引2的位置添加3个元素,分别为 1, 3, 4

numbers.splice(2, 3, 1, 3, 4)

二维和多维数组

let a = [1, 2, 3]
let b = [9, 7, 6]

可以使用矩阵(二维数组)来存储这些信息

let arr = []
arr[0] = [1, 2, 3]
arr[1] = [9, 7, 6]
console.log(arr)

JavaScript 只支持一维数组,并不支持矩阵。使用数组套数组,实现矩阵或任一多维数组。

let arr = []
arr[0] = []
arr[0][0] = 1
arr[0][1] = 2
arr[0][2] = 3
arr[1] = []
arr[1][0] = 9
arr[1][1] = 7

迭代二维数组的元素

输出矩阵的通用函数

function printMatrix(myMatrix) {
  for (let i = 0; i < myMatrix.length; i++) {
    for (let j = 0; j < myMatrix[i].length; j++) {
      console.log(myMatrix[i][j])
    }
  }
}
printMatrix(myMatrix)
printMatrix(myMatrix)


多维数组

创建一个 3 * 3 * 3 的矩阵,每一个格里包含矩阵的i(行)、j(列)及z(深度)之和:

let mytrix3x3x3 = []
for (let i = 0; i < 3; i++) {
  matrix3x3x3[i] = []
  for (let j = 0; j < 3; j++) {
    matrix3x3x3[i][j] = []
    for (let z = 0; z < 3; z++) {
      matrix3x3x3[i][j][z] = i + j + z
    }
  }
}

输出 3 x 3 x 3 矩阵

for (let i = 0; i < mytrix3x3x3.length; i++) {
  for (let j = 0; j < mytrix3x3x3[i].length; j++) {
    for (let z = 0; z < mytrix3x3x3[i][j].length; z++) {
      console.log(mytrix3x3x3[i][j][z])
    }
  }
}


如果是一个 3 x 3 x 3 x 3 的矩阵,代码中用四层嵌套的 for 语句,以此类推

JavaScript 的数组方法参考

数组合并

Array.concat()

迭代器函数

Array.every()Array.some()Array.forEach()Array.map()Array.filter()Array.reduce()

ES6 ES7 新增的数组方法

@@iteratorcopyWithinentriesincludesfindfindIndexfillfromkeysofvalues

类型数组

与C和Java等其他语言不同,JavaScript 数组不是强类型的,因此它可以存储任意类型的数据。 而类型数组则用于存储单一类型的数据。它的语法是 let myArray = new TypedArray(length),其中 TypedArray 需替换为下表所列之一。

类型数组 数据类型
Int8Array 8位二进制补码整数
Uint8Array 8位无符号整数
Uint8ClampedArray 8位无符号整数
Int16Array 16位二进制补码整数
Uint16Array 16位无符号整数
Int32Array 32位二进制补码整数
Uint32Array 32位无符号整数
Float32Array 32位IEEE浮点数
Float64Array 64位IEEE浮点数

代码示例如下:

let length = 5
let int16 = new Int16Array(length)
let array16 = []
array16.length = length
for (let i = 0; i < lenght; i++) {
  int16[i] = i + 1
}
console.log(int16)


使用 WebGL API 、进行位操作、处理文件和图像时,类型数组都可以大展拳脚。它用起来和普通数组也毫无二致,所有的数组方法和功能都可以用于类型数组。

类型数组处理二进制数据教程: goo.gl/kZBsGX

目录
相关文章
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp小程序的汽车租赁管理系统附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp小程序的汽车租赁管理系统附带文章源码部署视频讲解等
149 0
|
开发工具 Python
python批量下载百度图片
python批量下载百度图片
306 0
|
5天前
|
云安全 人工智能 安全
AI被攻击怎么办?
阿里云提供 AI 全栈安全能力,其中对网络攻击的主动识别、智能阻断与快速响应构成其核心防线,依托原生安全防护为客户筑牢免疫屏障。
|
15天前
|
域名解析 人工智能
【实操攻略】手把手教学,免费领取.CN域名
即日起至2025年12月31日,购买万小智AI建站或云·企业官网,每单可免费领1个.CN域名首年!跟我了解领取攻略吧~
|
9天前
|
安全 Java Android开发
深度解析 Android 崩溃捕获原理及从崩溃到归因的闭环实践
崩溃堆栈全是 a.b.c?Native 错误查不到行号?本文详解 Android 崩溃采集全链路原理,教你如何把“天书”变“说明书”。RUM SDK 已支持一键接入。
590 212
|
4天前
|
编解码 Linux 数据安全/隐私保护
教程分享免费视频压缩软件,免费视频压缩,视频压缩免费,附压缩方法及学习教程
教程分享免费视频压缩软件,免费视频压缩,视频压缩免费,附压缩方法及学习教程
234 138
|
存储 人工智能 监控
从代码生成到自主决策:打造一个Coding驱动的“自我编程”Agent
本文介绍了一种基于LLM的“自我编程”Agent系统,通过代码驱动实现复杂逻辑。该Agent以Python为执行引擎,结合Py4j实现Java与Python交互,支持多工具调用、记忆分层与上下文工程,具备感知、认知、表达、自我评估等能力模块,目标是打造可进化的“1.5线”智能助手。
828 60