TypeScript二维数组实现

版权声明:本文为博主原创文章,转载请注明出处。 https://blog.csdn.net/qq_41089021/article/details/84837966

在一个游戏项目中要用到二维数组,发现操作挺麻烦的,自己写一个,使用方便,简单易懂。

使用方式:

        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;
    }
}

猜你喜欢

转载自blog.csdn.net/qq_41089021/article/details/84837966