添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
相关文章推荐
谈吐大方的楼房  ·  nodejs xml 转json ...·  1 年前    · 
冷静的猴子  ·  shutil - How do I ...·  1 年前    · 
活泼的木耳  ·  windows10 ...·  1 年前    · 

数组的常用操作,增、删、改、查、置空、遍历、迭代、初始化、与字符串的相互转换、连接两个数组、查找符合条件的多个数组元素、判断该数组的所有元素或者单一元素是否符合某个条件等内容。详细见下文代码及注释,可以直接复制到编辑器中编译查看。

// arr 初始化
let arr:Array<number> = new Array<number>();
// let arr = [1, 2, 3];
arr = [1, 2, 3, 7, 5, 9, 1]; // 给数组直接赋值
console.log("数组", arr,  "长度为:", arr.length);
// 向数组中增加元素
console.log("向数组 尾 添加一个元素4, 修改后的数组长度为: " + arr.push(4));
console.log("向数组 头 添加一个元素0, 修改后的数组长度为: " + arr.unshift(0));
console.log(arr);
console.log("向数组下标为2插入 一个 元素 99: " + arr.splice(2, 0, 99));
console.log(arr);
console.log("向数组下标为2插入 3个 元素 88,77,66: " + arr.splice(2, 0, 88, 77, 66));
console.log(arr);
// 从数组中删除元素
console.log("从数组 尾 删除一个元素: " + arr.pop());
console.log("从数组 头 删除一个元素: " + arr.shift());
console.log(arr);
console.log("删除数组 下标为4 的元素: " + arr.splice(4, 1));
console.log(arr);
console.log("删除数组中从 下标为2开始后3个 元素: " + arr.splice(2, 3));
console.log(arr);
// 清空数组的几种方式
arr.length = 0;
arr = []; // 只是更改数组的引用地址, 原数组内存将等待垃圾回收
arr.splice(0, arr.length);
arr = [1, 2, 3, 7, 5, 9, 1];
// 获取数组中某个元素
console.log("获取数组 下标为0 的元素: " + arr[0]);
console.log("获取数组 下标为100 的元素: " + arr[100]); // 当该元素没有的时候, 会返回一个undefined类型
// 修改数组中的某个元素
arr[0] = 111;
// arr[-10] = 0; // 我们可以给一个非法下标赋值, 且仍然不会报错, 但我们并不推荐这么做, 这样会把一个数组类型转换为复杂类型
arr[10] = 999; // 当给一个超出当前数组长度的下标元素赋值时, 该数组将会自动补齐数组长度, 且中间未赋值的数组元素为undefined类型
console.log(arr, arr[9], arr.length);
// 查找
console.log("从数组中查找 [元素为3] 的下标: ", arr.indexOf(3));
console.log("从数组中查找 [元素为53] 的下标: ", arr.indexOf(53)); // 当找不到时会返回-1
console.log("数组中是否包含 值为3 的元素", arr.includes(3));
// 查找数组中(从左往右)第一个大于5的数组元素
let item:number = arr.find((val:number, index:number, array:Array<number>)=>{
    return val > 5;
console.log("数组中(从左往右)第一个大于5的数组元素", item);
// 查找数组中(从左往右)第一个大于5的数组元素的下标
let index:number = arr.findIndex((val:number, index:number, array:Array<number>)=>{
    return val > 5;
console.log("数组中(从左往右)第一个大于5的数组元素的下标", index);
// 排序
console.log("升序排列后的数组: ", arr.sort(function(a, b) {return a - b}));
console.log("降序排列后的数组: ", arr.sort(function(a, b) {return b - a}));
arr = [1, 99, 88, 111, 200, 4, 5, 7, 222, 555, 30];
console.log("按字符排序后的数组: ", arr.sort());
console.log("反转数组顺序", arr.reverse());
// 遍历数组
for(let i:number = 0; i < arr.length; i++) {
    console.log(arr[i]);
for(let i in arr) {
    console.log(`下标${i}, 元素${arr[i]}`);
for(let val of arr) {
    console.log(`元素${val}`);
// 迭代数组
arr.forEach((val:number, index:number, arr:Array<number>)=>{
    console.log(`元素:${val}, 下标${index}, 数组本身${arr}`);
let delArr:Array<number> = [1, 3, 5, 7, 12, 14, 19, 20, 25, 30];
// 删除数组中符合条件的某几个元素
let delTempArr:Array<number> = [];
for(let i:number = 0; i < delArr.length; i++) {
    if(delArr[i] % 2 == 0) {
        delTempArr.push(delArr[i]);
delArr = delTempArr;
console.log(delArr);
// 获取一个新数组, 该数组中的元素值原数组值的10倍
let arr1:Array<number> = arr.map((val:number, index:number, array:Array<number>)=>{
    return val * 10;
console.log(arr1);
// 获取一个新数组, 该数组中的元素为原数组中所有大于10的值
let arr2:Array<number> = arr.filter((val:number, index:number, array:Array<number>)=>{
    return val > 10;
console.log(arr2);
console.log(arr);
let sum = arr.reduce((total, val:number, index:number, array:Array<number>)=>{
    console.log(index, val, total);
    return total + val;
console.log("总和", sum);
// 判断该数组是否 每个元素都大于0, 该方法一旦判定为假将不会再迭代
let isHas:boolean = arr.every((val:number, index:number, array:Array<number>)=>{
    return val > 0;
console.log("判断该数组是否 每个元素都大于0", isHas);
// 判断该数组是否 每个元素都小于200
let isHas0:boolean = arr.every((val:number, index:number, array:Array<number>)=>{
    console.log(val < 200);
    return val < 200;
console.log("判断该数组是否 每个元素都小于200", isHas0);
// 判断该数组中是否 存在大于100的元素, 该方法一旦判定为真将不会再迭代
let isHas1:boolean = arr.some((val:number, index:number, array:Array<number>)=>{
    console.log(val > 100);
    return val > 100;
console.log("该数组中是否存在大于100的元素", isHas1);
// 连接两个数组到一个新数组
let arr0 = [-1, 2, 4, 6, 7, 999];
let arrConcat:Array<number> = arr.concat(arr0);
console.log("arr和arr0连接后的新数组", arrConcat);
// 将数组元素填充为某个值, 可用作初始化数组
let arr3:Array<number> = new Array<number>(10);
arr3.fill(1);
console.log("数组每个元素初始化为1", arr3);
// 将数组元素转换为字符串
let arr4:Array<string> = ["hello", ",", "my" , " ", "word!"];
console.log("将数组元素转换为字符串", arr4.join(""), "用逗号连接成字符串", arr4.join(","));
// 将字符串转换为数组
let str:string = "你好,我的朋友!";
console.log(str.split(""));
// 获取子数组
let arr6 = ["111", "333", "str", "is", "fff", "sos"];
console.log("下标从0到3的子数组", arr6.slice(0, 4));
数组的常用操作,增、删、改、查、置空、遍历、迭代、初始化、与字符串的相互转换、连接两个数组、查找符合条件的多个数组元素、判断该数组的所有元素或者单一元素是否符合某个条件等内容............ const arrayShuffle = require ( 'array-shuffle' ) ; const shuffled = arrayShuffle ( [ 1 , 2 , 3 , 4 , 5 , 6 ] ) ; //=> [3, 5, 4, 1, 2, 6] arrayShuffle( 数组 ) 类型: Array 洗牌的 数组 。 * 通用排序方法 * @param arr 需要排序的 数组 * @param field 排序字段 值类型传null 单字段传string 多字段传 数组 [["field1", SortType], ["field2", SortType]] 可传属性名 方法名 * @param sortType 排序类型 SortType枚举 * @returns * 值排序示例:Utils.mySort(sortArr, null, SortType.Down); * 单字段排序示例:Utils.mySort(sortArr, "getItemQuality", SortType.OrderDown); * 多字段排序示例:Utils.mySort(stoneArr, [["getItemQuality", SortType.OrderUp], ["getItemNum", SortType.OrderUp]]); public static mySort(arr: any[], field?: any, sortType = SortType.OrderUp): void 支持各种类型的排序,可以免去自己写compare方法
一般来说,我们用 数组 这种数据结构最多的情况,是用来做查询,时间复杂度为O(1),那么在这里我们来看一下如何用在 数组 中插入元素和删除元素。 数组 的适用场景: 一般在查询中,适用 数组 的情况是比较多,因为可以根据下标直接访问元素,时间复杂度是O(1),所以适用于读多写少的场景。 数组 的插入和删除元素,一般时间复杂度都是O(N),比较麻烦,所以对于插入和删除操作中,不建议选用 数组 这种数据结构,可以考虑链表...
let fibonacci: number[] = [1, '1', 2, 3, 5]; // Type 'string' is not assignable to type 'number'. 也对 数组 的方法进行了限制 let fibonacci: num push**push()** 方法将一个或多个元素添加到 数组 的末尾,并返回该 数组 的新长 3.**forEach()** 方法对 数组 的每个元素执行一次给定的函数,会运行5次,而且中间无法停止。 let songs: string[]=['red','green','pink'] songs.forEac
ts 定义 数组 常用的三种方法: - 「类型 + 方括号」表示法:最简单的方法是 使用 「类型 + 方括号」来表示 数组 ; - 数组 泛型:也可以 使用 数组 泛型(Array Generic) Array 来表示 数组 ; - 用接口表示 数组
表示一个空 数组 , 数组 的类型注解是由两部分组成:类型+[],此处表示字符串类型的 数组 (只能出现字符串类型) let names: string[] = ['张三','李四'] console.log(names) let ages: number[] =new Array(20,
原文出处:https://blog.csdn.net/honey199396/article/details/80750408 数组 是一个很简单的数据结构,但是每次 使用 TypeScript 数组 的时候又总是忘记怎么用了,干脆直接弄成干货,忘了过来看看。 一、 数组 的声明 let array1:Array&lt;number&gt;; let array2:number[]; 二、 数组 ...
2. 数组 的赋值(两种) A. var m=new Array(2); 一个值表示 数组 length var m=new Array(2,3,4,5); 多个值表示 数组 赋值 B. m[0]=2; m[1]=3; m[2]=4;
TS 数组 是指 TypeScript 中的 数组 ,它是一种有序集合,可以存储多个类型相同的元素。在 TS 中, 数组 可以包含任何类型的数据,例如数字、字符串、布尔值、对象等。 声明一个 TS 数组 的语法如下: let myArray: Array<number> = [1, 2, 3, 4, 5]; 这里我们声明了一个名为myArray的 数组 ,它包含了5个数字元素。在声明时,我们 使用 了Array类型来定义 数组 ,同时 使用 了尖括号<>来指定 数组 中元素的类型为number。 我们还可以 使用 另一种语法来声明 数组 ,如下所示: let myArray: number[] = [1, 2, 3, 4, 5]; 这里我们同样声明了一个名为myArray的 数组 ,它包含了5个数字元素。在这种语法中,我们直接 使用 数组 元素的类型加上方括号[]的形式来定义 数组 TS 数组 支持许多常用的方法,例如push、pop、shift、unshift、slice、splice等,它们用于在 数组 中添加、删除、替换、截取元素等操作。