HarmonyOS NEXT鸿蒙开发 ArkTS:数组

案例

案例1

一个人最多拿10瓶啤酒,那么如何拿20瓶啤酒?

案例2

一个班级的学生有30人,如何用变量表示这30人的数学成绩?用30个变量吗?

应该使用数组,数组的作用相当于上面的啤酒箱,可以装入30人的数学成绩

int lilei=80;
int hanmeimei=87;
.........
int lucy=85;

数组

存储 相同类型 的数据,按一定的 顺序 排列

声明

方式一(推荐)

使用方括号声明

let 变量名 : 类型[] = []

例子

let students : string[] = ["李雷","韩梅梅","lucy","lili"]

console.log( students )

方式二

使用泛型语法

let 变量名 : Array<类型> = []

例子

let students : Array<string> = ["李雷","韩梅梅","lucy","lili"]

console.log( students )

数组元素的访问

通过索引(从 0 开始)访问

let languages: string[] = ["ArkTS", "Java", "JS"];

// 访问元素
console.log(languages[0]); // 输出:ArkTS

访问越界索引(返回 undefined)

console.log(languages[10]); // 输出:undefined

修改数组元素

// 修改元素
languages[1] = "Python";
console.log(languages[1]); // 输出:Python

数组的长度(length)

通过 length 属性获取或修改数组长度:

let nums: number[] = [10, 20, 30];

console.log(nums.length); // 输出:3

// 缩短数组(截断后面的元素)
nums.length = 2;
console.log(nums); // 输出:[10, 20]

// 延长数组(新增元素为 undefined)
nums.length = 5;
console.log(nums); // 输出:[10, 20, undefined, undefined, undefined]

常用数组方法

ArkTS 数组支持多种内置方法,用于操作元素:

方法 说明 示例
push(element) 向数组末尾添加元素,返回新长度 nums.push(40); // nums 变为 [10,20,40]
pop() 移除并返回最后一个元素 let last = nums.pop();
unshift(element) 向数组开头添加元素,返回新长度 nums.unshift(5); // nums 变为 [5,10,20]
shift() 移除并返回第一个元素 let first = nums.shift();
splice(start, count) 从 start 位置删除 count 个元素 nums.splice(1, 1); // 移除索引1的元素
slice(start, end) 截取 [start, end) 区间的元素(新数组) let sub = nums.slice(0, 2);
concat(arr) 合并数组,返回新数组 let combined = nums.concat([30,40]);
indexOf(value) 返回元素首次出现的索引(-1表示不存在) let idx = nums.indexOf(20);
includes(value) 判断数组是否包含元素(返回布尔值) let has20 = nums.includes(20);
join(separator) 用分隔符拼接元素为字符串 let str = nums.join("-");
reverse() 反转数组(修改原数组) nums.reverse();
sort() 排序数组(默认按字符串排序) nums.sort((a,b) => a - b); // 数字升序

数组遍历

访问数组的每一个元素

for 循环

let fruits: string[] = ["苹果", "香蕉", "橙子"];

// 1. for 循环
for (let i = 0; i < fruits.length; i++) {
  console.log(`索引 ${i}: ${fruits[i]}`);
}

for…of 循环(遍历元素)

// 2. for...of 循环(遍历元素)
for (let fruit of fruits) {
  console.log(fruit);
}

forEach 方法(回调函数)

// 3. forEach 方法(回调函数)
fruits.forEach((item, index) => {
  console.log(`第 ${index+1} 个水果:${item}`);
});

二维数组

ArkTS 支持多维数组(数组的元素也是数组):

// 二维数组(矩阵)
let matrix: number[][] = [
  [1, 2, 3],
  [4, 5, 6],
  [7, 8, 9]
];
// 访问元素
console.log(matrix[1][2]); // 输出:6

// 遍历二维数组
for (let row of matrix) {
  for (let num of row) {
    console.log(num);
  }
}

只读数组

使用 readonly 关键字声明只读数组(不能修改元素或长度):

const readonlyArr: readonly number[] = [1, 2, 3];
// 以下操作会报错:
// readonlyArr[0] = 10;
// readonlyArr.push(4);
// readonlyArr.length = 5;

原文出处:/show_1GW1wcyg7ZJf.html