typescript 数组操作

news2024/10/5 17:41:24

 

使用变量来存储值会带来以下限制:

  • 变量本质上是标量。换言之,一个变量声明变量声明一次只能包含一个。这意味着在程序中存储n个值需要n个变量声明。因此,当需要存储更大的值集合时,使用变量是不可行的。

  • 程序中的变量以随机顺序分配存储器,从而使得难以按其声明的顺序检索/读取值。

TypeScript引入了数值的概念来解决这个问题。数组是值的同类集合。为了简化,数组是相同数据类型的值的集合。它是一个用户定义的类型。

数组的特点

以下是一个数组的特点列表:

  • 数组声明分配顺序内存块。

  • 数组是静态的。这意味着,数组一旦被初始化就不能改变大小。

  • 每个存储块表示一个数组元素。

  • 数组元素是由称为元素的下标/索引的唯一整数标识。

  • 像变量一样,数组也应该在使用前声明。使用var关键字来声明一个数组。

  • 数组初始化是指填充数组元素。

  • 数组元素的值可以被更新或修改,但不能被删除。

声明和初始化数组

使用以下语法在Typescript中声明一个初始化数组:

语法

var array_name[:datatype];        //declaration 
array_name = [val1,val2,valn..]   //initialization

没有数据类型的数组声明被认为是any类型。在初始化期间,从数组的第一个元素的数据类型推论出这种数组的类型。

例如,像 var numlist:number[] = [2,4,6,8] 这样的声明将创建一个数组,如下所示:

数组指针默认引用第一个元素。

可以在单个语句中声明和初始化数组。相同的语法是:

var array_name[:data type] = [val1,val2…valn]

 - 一对“[ ]”被称为数组的维数。

访问数组元素

下标后面的数组名称用来引用数组元素。它的语法如下:

array_name[subscript] = value

示例:简单数组

var alphas:string[]; 
alphas = ["1","2","3","4"] 
console.log(alphas[0]); 
console.log(alphas[1]);

在编译时,它会生成以下JavaScript代码:

//Generated by typescript 1.8.10
var alphas;
alphas = ["1", "2", "3", "4"];
console.log(alphas[0]);
console.log(alphas[1]);

上面的代码的输出是如下:

1 
2 

示例:单个语句声明和初始化

var nums:number[] = [1,2,3,3] 
console.log(nums[0]); 
console.log(nums[1]); 
console.log(nums[2]); 
console.log(nums[3]);

在编译时,它会生成以下JavaScript代码:

//Generated by typescript 1.8.10
var nums = [1, 2, 3, 3];
console.log(nums[0]);
console.log(nums[1]);
console.log(nums[2]);
console.log(nums[3]);

它的输出如下:

1 
2 
3 
3 

Array对象

也可以使用Array对象创建数组。可以传递Array构造函数。

  • 表示数组大小的数值

  • 逗号分隔值列表。

下面的示例说明了如何使用此方法创建数组。

示例

var arr_names:number[] = new Array(4)  

for(var i = 0; i < arr_names.length; i++) { 
   arr_names[i] = i * 2 
   console.log(arr_names[i]) 
}

在编译时,它会生成以下JavaScript代码:

//Generated by typescript 1.8.10
var arr_names = new Array(4);

for (var i = 0; i < arr_names.length; i++) {
   arr_names[i] = i * 2;
   console.log(arr_names[i]);
}

它的输出如下:

0 
2 
4 
6 

示例:Array构造函数接受逗号分隔值

var names:string[] = new Array("Mary","Tom","Jack","Jill") 

for(var i = 0; i < names.length; i++) { 
   console.log(names[i]) 
}

在编译时,它会生成以下JavaScript代码:

//Generated by typescript 1.8.10
var names = new Array("Mary", "Tom", "Jack", "Jill");
for (var i = 0; i < names.length; i++) {
   console.log(names[i]);
}

它的输出如下:

Mary 
Tom 
Jack 
Jill

Array方法

下面给出Array对象的方法及其描述的列表。

序号方法和说明
1concat()

返回由此数组与其他数组或值连接组成的新数组。

2every()

如果此数组中的每个元素都满足提供的测试函数,则返回true。

3filter()

使用该数组中由提供的过滤函数返回true的的元素来创建一个新数组。

4forEach()

为数组中的每个元素调用一个函数。

5indexof()

返回数组中元素的第一个(最小)索引,该索引等于指定的值,如果没有找到,则返回-1。

6join()

将数组的所有元素连接成一个字符串。

7lastIndexOf()

返回数组中元素的最后一个(最大)索引,该索引等于指定值,如果未找到,则返回-1。

8map()

使用在此数组中的每个元素上调用提供的函数的结果来创建一个新数组。

9pop()

从数组中删除最后一个元素并返回该元素。

10push()

将一个或多个元素添加到数组的末尾,并返回该数组的新长度。

11reduce()

同时对数组的两个值(从左到右)应用函数,以将其减少为单个值。

12reduceRight()

同时对数组的两个值(从右到左)应用函数,以将其减少为单个值。

13reverse()

反转数组元素的顺序 - 第一个成为最后一个,最后一个成为第一个。

14shift()

从数组中删除第一个元素并返回该元素。

15slice()

提取数组的一部分并返回一个新数组。

16some()

如果此数组中至少有一个元素满足提供的测试函数,则返回true。

17sort()

对数组的元素进行排序。

18splice()

添加或从数组中删除元素。

19toString()

返回表示数组及其元素的字符串。

20unschift()

将一个或多个元素添加到数组的前面,并返回数组的新长度。

数组解构

指分解实体的结构。当在数组的上下文中使用时,TypeScript支持解构。

示例

var arr:number[] = [12,13] 
var[x,y] = arr 
console.log(x) 
console.log(y)

在编译时,它会生成以下JavaScript代码:

//Generated by typescript 1.8.10
var arr = [12, 13];
var x = arr[0], y = arr[1];
console.log(x);
console.log(y);

它的输出如下:

12 
13

数组遍历使用for ... in循环

可以使用for ... in循环遍历数组。

var j:any; 
var nums:number[] = [1001,1002,1003,1004] 

for(j in nums) { 
   console.log(nums[j]) 
} 

循环执行基于索引的数组遍历。

在编译时,它会生成以下JavaScript代码。

//Generated by typescript 1.8.10
var j;
var nums = [1001, 1002, 1003, 1004];

for (j in nums) {
   console.log(nums[j]);
}

上面的代码的输出给出如下:

1001 
1002 
1003 
1004

TypeScript中的数组

TypeScript支持数组中的以下概念:

序号概念和说明
1多维数组

TypeScript支持多维数组。多维数组的最简单的形式是二维数组。

2将数组传递给函数

您可以通过指定不带索引的数组名称来向函数传递指向数组的指针。

3从函数返回数组
允许函数返回数组。

多维数组操作 

您只需要 [] 来实例化一个数组 - 无论其类型如何,这都是正确的。数组是数组类型的事实并不重要。

同样的事情也适用于循环的第一级。它只是一个数组,而 [] 是一个新的空数组 - 工作完成。

至于第二级,如果 Thing 是一个类,那么 new Thing() 就可以了。否则,根据类型,您可能需要一个工厂函数或其他表达式来创建一个。

 class Something {
    private things: Thing[][];

    constructor() {
        this.things = [];

        for(var i: number = 0; i < 10; i++) {
            this.things[i] = [];
            for(var j: number = 0; j< 10; j++) {
                this.things[i][j] = new Thing();
            }
        }
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/134412.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

当下一场数字化的浪潮,正在各行各业深刻上演着

一场数字化的浪潮&#xff0c;正在各行各业深刻上演着。在零售领域&#xff0c;亦不例外。以往&#xff0c;提及零售&#xff0c;我们更多地想到的是&#xff0c;各式各样的电商平台&#xff0c;我们看到的是&#xff0c;各式各样的电商模式&#xff1b;现在&#xff0c;提及零…

测试用例设计-淘宝购物车

测试人员和开发人员产生争执了怎么办&#xff1f; ① 先检查自身&#xff0c;是否BUG描述不清楚 ② 站在用户的角度考虑问题 ③ BUG定级要有理有据 ④ 提高自身的技术能力和业务水平&#xff0c;最好同时提出解决方案。 ⑤ 开发人员不接受时&#xff0c;不要争吵&#xff0c;可…

YOLOv5更换骨干网络之 PP-LCNet

论文地址&#xff1a;https://arxiv.org/abs/2109.15099 代码地址&#xff1a;https://github.com/ngnquan/PP-LCNet 我们提出了一种基于MKLDNN加速策略的轻量级CPU网络&#xff0c;名为PP LCNet&#xff0c;它提高了轻量级模型在多个任务上的性能。本文列出了在延迟几乎不变的…

YOLOv5更换骨干网络之 EfficientNet-B0

论文地址&#xff1a;https://arxiv.org/abs/1905.11946 代码地址&#xff1a;https&#xff1a;//githeb.com/TensorFlow/tpu/tree/master/Models/Offical/Efficientnet 卷积神经网络(ConvNet)通常是在固定的资源预算下开发的&#xff0c;如果有更多的资源可用&#xff0c;则…

如何从macOS ventura降级到 macOS Monterey?这两大方法可以帮到你

苹果发布了macOS 13 Ventura的正式版系统&#xff0c;增加了许多实用性的功能&#xff0c;大家纷纷下载更新最新版本的系统。但根据许多已安装ventura的用户反馈&#xff0c;这个版本的MacOS系统还不够成熟&#xff0c;应该有不少bug还没有修复过来&#xff0c;从而求助小编分享…

c#入门-泛型约束

泛型约束 使用泛型时会假设泛型占位符是任何类型。 但因为它被假设是任何类型&#xff0c;所以使用起来有很大的限制。只有所有类型都有的功能&#xff0c;他才能用。 为了满足所有的可能类型&#xff0c;可用的操作非常少。 为此我们可以为泛型占位符添加约束。虽然会让能兼…

大型项目迭代流程

一、回顾目标 总目标&#xff1a; 年底上线完成100% 结果&#xff1a; 年底上线并开量验证过成功&#xff0c;完成率100% 阶段目标A&#xff1a; 10月底项目全流程开发完成&#xff0c;并提测出票前流程 结果&#xff1a;10月21日项目开发完成100%&#xff0c;10月25日前…

基于残差神经网络的交通标志识别算法研究与应用实现

问题&#xff1a; 从图像中识别交通标志对于自动驾驶至关重要。要想实现自动驾驶&#xff0c;车辆必须了解并遵守所有交通规则。当前&#xff0c;特斯拉、谷歌、梅赛德斯-奔驰、丰田、福特、奥迪等许多大公司都在研究自动驾驶。因此&#xff0c;为了实现这项技术的准确性&…

pandas的series创建和pandans的dataFrame创建

一&#xff1a;series和读取外部数据 1.1pandas的series的了解 1.1.1 为什么要学习pandas numpy能够帮我们处理处理数值型数据&#xff0c;但是这还不够。很多时候&#xff0c;我们的数据除了数值之外&#xff0c;还有字符串&#xff0c;还有时间序列等 比如&#xff1a;我们通…

显式利用用户画像的多兴趣建模

显式利用用户画像的多兴趣建模 目前在多兴趣建模中&#xff0c;用户侧的特征包括用户基础画像特征&#xff08;年龄、性别、地域等&#xff09;、用户在当前场景的静态兴趣画像特征&#xff08;短期兴趣画像、长期兴趣画像&#xff09;、交互的历史正向行为序列特征&#xff0…

【Javassist】快速入门系列13 使用Javassist获取注解

系列文章目录 01 在方法体的开头或结尾插入代码 02 使用Javassist实现方法执行时间统计 03 使用Javassist实现方法异常处理 04 使用Javassist更改整个方法体 05 当有指定方法调用时替换方法调用的内容 06 当有构造方法调用时替换方法调用的内容 07 当检测到字段被访问时使用语…

MySQL性能优化三 一条SQL在MySQL中执行的过程

一 MySQL的内部组件结构 大体来说&#xff0c;MySQL 可以分为 Server 层和存储引擎层两部分。 1.1 service层 主要包括连接器、查询缓存、分析器、优化器、执行器等&#xff0c;涵盖 MySQL 的大多数核心服务功能&#xff0c;以及所有的内置函数&#xff08;如日期、时间、数学…

Easy-Captcha验证码 生成以及校验(简单易懂)

目录说明pom引入详解参数类使用easy-captcha 中提供了下面几种类源码说明Captcha使用验证图解源码测试GitHub说明 Java图形验证码&#xff0c;支持gif、中文、算术等类型&#xff0c;可用于Java Web、JavaSE等项目 pom引入 <dependency><groupId>com.github.whvc…

【C++】 bitset(位图)的使用

目录 一、bitset的基本介绍 1. 位图的概念 2. 位图的应用 二、biset的基本使用 1. bitset的成员函数 2. 基本使用介绍 1. 定义方式 2. 成员函数的使用 一、bitset的基本介绍 1. 位图的概念 所谓位图&#xff0c;就是用每一位来存放某种状态&#xff0c;适用于海量数…

win系统一台电脑安装两个不同版本的mysql教程

1.mysql下载zip包&#xff08;地址&#xff09;MySQL :: Download MySQL Community Serverhttps://dev.mysql.com/downloads/mysql/ 2.解压在你的电脑上&#xff08;不要再C盘和带中文的路径&#xff09; data和my.ini是没有的。 3.创建my.ini文件 创建记事本改变后缀名就可以 …

【5G RRC】小区搜索(Cell Search)和系统捕获(System Acquisition)流程

博主未授权任何人或组织机构转载博主任何原创文章&#xff0c;感谢各位对原创的支持&#xff01; 博主链接 本人就职于国际知名终端厂商&#xff0c;负责modem芯片研发。 在5G早期负责终端数据业务层、核心网相关的开发工作&#xff0c;目前牵头6G算力网络技术标准研究。 博客…

环境变量?拿来把你!

文章目录环境变量直接运行程序的第一种方法&#xff1a;把程序移动到系统目录底下echo $环境变量&#xff1a;查看环境变量PATH:指定命令的搜索路径export 定义一个新的环境变量export PATH旧路径&#xff1a;新路径getenv&#xff1a;获取环境变量—获取环境变量的第一种方式s…

车载诊断协议UDS——读写服务Service 22/2E

在UDS协议中,对于服务常用有两种格式: 1、Service (服务) + Subfunction( 子服务) 子服务可理解为对服务的功能补充,比如会话模式Service 10服务,子服务可以分为不同的会话模式(默认会话模式、扩展会话模式、编程会话模式等等),用来区分服务的执行权限。 2、Servi…

[OC学习笔记]启动流程(objc部分)

先回顾下这张图&#xff0c;回顾下整体流程。现在分析下在此流程中objc4源码&#xff08;818.2&#xff09;的处理逻辑。 _objc_init解析 我们在上图可以看出&#xff0c;dyld在main函数之前&#xff08;pre-main&#xff09;会间接调用到objc的_objc_init&#xff0c;其中使…

洛谷—— AT_abc157_a [ABC157A] Duplex Printing

文章目录[ABC157A] Duplex Printing题面翻译题目描述输入格式输出格式说明提示题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1样例 #2样例输入 #2样例输出 #2样例 #3样例输入 #3样例输出 #3提示制約Sample Explanation 1AC代码[ABC157A] Duplex Printing 题面翻译 题…