1

目录

  • 前言
  • 对象/字典(Map)
  • 数组(Array)
  • 字符串(String)
  • 字典、数组、字符串的具体操作
  • 结束语

    前言

    在HarmonyOS开发中,关于数据类型的处理是非常常见的使用场景,尤其是字典、数组和字符串这三种非常基础且常用的数据结构,它们在数据处理、信息存储和用户界面展示等方面占有着非常重要的角色,也是我们在HarmonyOS开发中不可避免的使用知识。那么本文就来详细分享一下在HarmonyOS开发中如何处理这些数据结构,包括它们的使用和应用场景,记录一下,分享给用需要的开发者。

    对象/字典(Map)

    关于对象的定义,字典是一种键值对集合,也是非常常见且常用的数据类型,它允许我们存储和检索数据项,其中每个数据项都有一个唯一的键。其实对象类型的最简单声明方法,就是使用大括号表示对象,在大括号内部声明每个属性和方法的类型。除了原始类型,对象是 JS最基本的数据结构,但是TS对于对象类型有很多规则。
    还有就是直到ES6 提供了 Map 数据结构,它类似于对象,也是键值对的集合,但是“键”的范围不限于字符串,各种类型的值(包括对象)都可以当作键。也就是Object 结构提供了“字符串—值”的对应,Map 结构提供了“值—值”的对应,是一种更完善的 Hash 结构实现。所以说,在实际开发中如果需要“键值对”的数据结构,选择Map 比 Object 更合适。

    1、创建字典

    在HarmonyOS中,可以使用Map类来创建字典:

const m = new Map();
const o = {p: 'Hello World'};

m.has(o) // true
m.has(o) // false

2、操作字典

  • 赋值、获取值:通过键来操作对应的值。

    m.set(o, 'content')
    m.get(o) // "content"
  • 删除键值对:使用remove方法。
    m.delete(o) // true
  • 遍历字典:可以使用forEach方法遍历字典中的所有键值对。

    map.forEach((key, value) => {
      // 处理每个键值对
    });

    3、动态设置对象的key

    众所周知,在TS中如果想动态设置对象的键,可以使用方括号([])语法

    let key = 'name';
    let answer:string = {
      [key]:'张三'
    }

    4、应用场景

  • 用户数据存储:存储用户设置或偏好。
  • 缓存数据:临时存储从网络请求或数据库查询得到的数据。

    数组(Array)

    先来介绍一下数组的概念,其实数组是相同数据类型的元素集合,它支持通过索引访问元素。数组在 TS里面分成两种类型,分别是数组(array)和元组(tuple)。

    1、创建数组

    在HarmonyOS中,可以使用数组初始化语法创建数组:

    let arr:number[] = [1, 2, 3]; //写法一:在数组成员的类型后面,加上一对方括号。
    let arr:(number|string)[]; //写法二:如果数组成员的类型比较复杂,可以写在圆括号里面。

    2、操作数组

  • 访问元素:通过索引访问数组中的元素。

    let arr:number[] = [1, 2, 3];
    let foo = arr[3]; 
  • 遍历数组:可以使用for循环遍历数组中的所有元素。

    let arr:number[] = [1, 2, 3];
    arr.forEach((key, value) => {
      // 处理每个键值对
    });

    3、多维数组

    在TS使用T[][]的形式,表示二维数组,T是最底层数组成员的类型,具体写法如下所示:

     let list:number[][] = [[1,2,3], [5,6,7]];

    上面示例中,变量 list的类型是number[][],表示它是一个二维数组,最底层的数组成员类型是number。

    4、应用场景

  • 数据集合:存储一系列相关的数据。
  • 函数参数:将数组作为参数传递给函数。

    字符串(String)

    先来了解string的定义,字符串是字符序列,是编程中最常用的数据类型之一,string类型包含所有字符串。

    1. 创建字符串

    在HarmonyOS中,可以直接使用字符串字面量或new String()创建字符串:

    const x:string = 'hello';
    const y:string = `${x} world`; //拼接符

    2. 操作字符串

  • 连接字符串:使用+运算符连接字符串。

    const message:string = greeting + " " + name;
  • 字符串长度:使用length()方法获取字符串长度。
    let length = message.length;
  • 字符串分割:使用split()方法根据分隔符分割字符串。

    var str="1-2-3-4-5";
    var res=str.split("-");
    console.log(res); ===>  ["1", "2", "3", "4", "5"]

    3、charAt方法取值

    通过下标去取值,具体如下所示:

    var str = 'sanzhanggui';
    // 通过下标取值
    var res = str.charAt(0); //结果:"s"

    4、字符串的遍历器接口

    关于字符串的遍历器,其实是ES6 为字符串添加了遍历器接口,使得字符串可以被for...of循环遍历,具体示例如下所示:
    image.png

    5、应用场景

  • 文本显示:在用户界面上显示文本信息。
  • 数据处理:处理用户输入或从文件中读取的文本数据。

    对象、数组、字符串的具体操作

    这里汇总一些常用的数据操作方法,后面会单独对这三个类型的处理再做专题介绍,这里只介绍在HarmonyOS开发中常用的操作,具体如下所示:

    1、判断是否是字典

    if (value === 'object' && value !== null)
    

    2、判断是否是数组

    if(Array.isArray(value))

    3、把数组转字符串

    .join('')

    4、判断字符串是否含有某字符

    .includes('')

    5、让float保留两位小数

    let counts:number = 3.1475926   
    counts.fixed(2)     // 注意:counts必须是number类型

    6、把字符串转Boo

    ` Boolean('str')
    `

    7、对数组进行排序

    .sort((a, b) => a - b); //从小到大进行排序

    8、判断对象是否有值

    可以用Object.keys()方法,因为Object.keys()方法会返回一个由给定对象的自身可枚举属性组成的数组,然后通过检查数组的长度来判断对象是否为空。

    9、把数组中的所有0换成1

    this.change = this. change.map(item => item === '0' ? '1' : item);

    10、判断数组中是否含有某字符串

    let contains: boolean = this.change.includes('0');

    11、对数组进行删除某元素操作

    array.splice(2,1) //删除下标是2的元素

    12、对字典判断是否含有某个key值

    let boo: boolean = Reflect.has(obj, 'propertyName'); 

    结束语

    通过上文关于对HarmonyOS开发中的字典、数组和字符串使用介绍,不难看出它们是HarmonyOS开发中的基础数据结构,它们在数据存储、处理和展示中发挥着重要作用。作为HarmonyOS开发者,我个人觉得掌握这些数据结构的使用方法,能够帮助我们更高效地进行HarmonyOS应用开发。可能有些开发者会觉得这些内容太简单,不认真对待,但是据我个人8年的大前端开发经验来看,往往越简单的内容越需要认真对待,尤其是在实际开发中还是应聘求职中,往往是对基本知识的掌握的考察。随着HarmonyOS生态的不断发展壮大,关于这些在实际开发中必备的基础技能,将变得越来越重要,也希望各位HarmonyOS开发者能够足够重视起来。


三掌柜
21.6k 声望6.8k 粉丝

一分耕耘,不一定有一分收获,但十分耕耘,一定会有一分收获!