在一个游戏项目中要用到二维数组,发现操作挺麻烦的,自己写一个,使用方便,简单易懂。
使用方式:
let my2DArray:My2DArray = new My2DArray(5,6,0);
console.log("数组:",my2DArray.getArray());
console.log("取值:",my2DArray.getValue(1,1));
my2DArray.setValue(1,1,5);
console.log("赋值后取值:",my2DArray.getValue(1,1));
console.log("取数组范围外的值:",my2DArray.getValue(10,1));
运行结果:
My2DArray.ts源码如下:
/**
* @author 杨松恺
* @date 2018-12-05 15:45:08
* 定义二维数组,提供相关操作
*/
class My2DArray{
private my2DArray : Array<Array<number>> = new Array<Array<number>>();
private rows :number;
private columns :number;
/**
* 初始化数组
*/
public constructor(rows:number,columns:number,value:number){
this.rows = rows;
this.columns = columns;
this.initRows(rows);
this.initColumns(columns,value);
}
/**
* 取数组中的值
*/
public getValue(rows:number,columns:number):number{
if(rows < 0 || columns < 0 || rows >= this.rows || columns >= this.columns){
return null;
}
return this.my2DArray[rows][columns];
}
/**
* 为数组赋值
*/
public setValue(rows:number,columns:number,value:number):void{
if(rows < 0 || columns < 0 || rows >= this.rows || columns >= this.columns){
return ;
}
this.my2DArray[rows][columns] = value;
}
/**
* 初始化行数
*/
private initRows(rows:number):void{
if(rows < 1) {
return;
}
for(let i = 0 ; i < rows ; i ++){
this.my2DArray.push(new Array<number>());
}
}
/**
* 初始化列数
*/
private initColumns(columns:number,value:number):void{
if(columns < 1){
return;
}
for(let i = 0 ; i < this.my2DArray.length ; i ++){
for(let j = 0 ; j < columns ; j ++){
this.my2DArray[i].push(value);
}
}
}
/**
* 获取数组
*/
public getArray():Array<Array<number>>{
return this.my2DArray;
}
}
|
请发表评论