几乎所有的编程语言都支持数组类型,因为数组是最简单的内存数据结构。
创建数组
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 新增的数组方法
@@iterator
copyWithin
entries
includes
find
findIndex
fill
from
keys
of
values
类型数组
与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