《TypeScript》 - Array(数组)

2021-07-01  本文已影响0人  张中华

数组对象是使用单独的变量名来存储一系列的值。
TypeScript 声明数组的语法格式如下所示:

var array_name[:datatype];        //声明 
array_name = [val1,val2,valn..]   //初始化

或者直接在声明时初始化:

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

示例:

var nums: Number = [2, 4,6,8];

整个数组结构如下所示:


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]) 
}

数组解构

我们也可以把数组元素赋值给变量,如下所示:

var arr:number[] = [12,13] 
var[x,y] = arr // 将数组的两个元素赋值给变量 x 和 y
console.log(x) // 12
console.log(y) // 13

数组迭代

我们可以使用 for 语句来循环输出数组的各个元素:

var j:any; 
var nums:number[] = [1001,1002,1003,1004] 
 
for(j in nums) { 
    console.log(nums[j]) 
}

多维数组

一个数组的元素可以是另外一个数组,这样就构成了多维数组(Multi-dimensional Array)。
最简单的多维数组是二维数组,定义方式如下:

var arr_name:datatype[][]=[ [val1,val2,val3],[v1,v2,v3] ]
var multi:number[][] = [[1,2,3],[23,24,25]]  
console.log(multi[0][0]) 
console.log(multi[0][1]) 
console.log(multi[0][2]) 
console.log(multi[1][0]) 
console.log(multi[1][1]) 
console.log(multi[1][2])

数组方法

代码示例:

let arr1 = ['a', 'b'];
let arr2 = ['c', 'd'];

// concat():concat(...items: ConcatArray<T>[]): T[];
console.log(arr1.concat(arr2)); // [ 'a', 'b', 'c', 'd' ]

// every():every(callbackfn: (value: T, index: number, array: T[]) => unknown, thisArg?: any): boolean;
console.log(arr1.every(x => x === 'a')); // false

// some():some(callbackfn: (value: T, index: number, array: T[]) => unknown, thisArg?: any): boolean;
console.log(arr2.some(x => x === 'c')); // true

// filter(): filter(callbackfn: (value: T, index: number, array: T[]) => unknown, thisArg?: any): T[];
console.log(arr1.filter(x => x !== 'a')); // [ 'b' ]

// forEach(): forEach(callbackfn: (value: T, index: number, array: T[]) => void, thisArg?: any): void;
arr1.forEach(x => console.log(x)); // a/nb

// map():map<U>(callbackfn: (value: T, index: number, array: T[]) => U, thisArg?: any): U[];
console.log(arr1.map(x => {console.log(x); return `${x}${x}`})); // a/nb/n[ 'aa', 'bb' ]

// indexOf():indexOf(searchElement: T, fromIndex?: number): number;
console.log(arr1.indexOf('a')); // 0

// lastIndexOf():lastIndexOf(searchElement: T, fromIndex?: number): number;
console.log(arr1.lastIndexOf('a', 0)); // 0

// pop():pop(): T | undefined;
console.log(arr1.pop()); // b
console.log(arr1); // ['a']

// push():push(...items: T[]): number;
console.log(arr1.push('b')); // 2
console.log(arr1); // ['a', 'b']

// reduce():
//reduce(callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T): T;
//reduce(callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T, initialValue: T): T;
console.log(arr1.concat(arr2).reduce((x,y) => x+y));// abcd

//reduceRight():
//reduceRight(callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T): T;
//reduceRight(callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T, initialValue: T): T;
console.log(arr1.concat(arr2).reduceRight((x,y) => x+y));// dcba

// reverse():reverse(): T[];
console.log(arr1.reverse());// [ 'b', 'a' ]

// sort():sort(compareFn?: (a: T, b: T) => number): this;
console.log(arr2.reverse().sort());// [ 'c', 'd' ]
console.log(arr2.sort((a,b) => b < a ? 1 : 0)); // [ 'c', 'd' ]

// shift():shift(): T | undefined;
console.log(arr1.shift()); // b
console.log(arr1); // [ 'a' ]

// unshift():
console.log(arr1.unshift('c')); // 4
console.log(arr1); // [ 'c', 'a', 'b', 'a' ]

// slice():slice(start?: number, end?: number): T[];
console.log(arr2.slice(0,1)); // [ 'c' ]

// splice():
// splice(start: number, deleteCount?: number): T[];
// splice(start: number, deleteCount: number, ...items: T[]): T[];
console.log(arr1); // [ 'a' ]
console.log(arr1.splice(2,0,'b', 'a')); // []
console.log(arr1); // [ 'a', 'b', 'a' ]

//join():join(separator?: string): string;
console.log(arr1.join('-'));

// toString(): toString(): string;
console.log(arr1.toString()); // a,b,a

上一篇 下一篇

猜你喜欢

热点阅读