【cocos creator】【TS】数组array,对象object,字符串string,特性和增删改查

数组添加属性,增加,删除,排序,查找,按数组元素排列数组,判断对象中是否包含某个属性
slice,substring,substr截取字符串,判断字符是否为数字,中文

数组:

let arr=[];//下标默认从0开始
arr[1]="1";//不会报错
console.log(arr);//[empty, '1']会自动创建一个arr[0],此时length为2
arr["2"]="2";//数字字符赋值也没问题

赋值,添加,获取元素:


			let arr=[];//创建空数组
        	for (let i = 0; i < 3; i++) {
            	arr.push(i);//向数组末尾添加元素
          	}
          	//输出:arr=[0,1,2]
          	arr=[];//清空数组
        	for (let i = 0; i < 3; i++) {
            	arr.unshift(i);//向数组开头添加元素
          	}
          	//输出:arr=[2,1,0]
          	let data1=arr.shift();//data1=2,取数组第一个
          	let data2=arr.pop();//data2=0,取数组最后一个

删除元素:

	let arr=[1,2,3];
    arr.splice(2,1);//从i开始删除1个
    //输出:arr=[1,3]
    arr[2]=null
    //输出:arr=[1,2,null]

	let a=arr;//赋值直接引用,非复制
	a[1]=0;
	//输出 arr=[1,0,3]
	//改变a,arr值也会改
	a=[];或者a=null;
	//输出 arr=[1,0,3]
	//清空引用,原来的数组不变

	a=arr;
	arr=[];//清空引用
	//输出 a =[1,0,3]
	
	

排序数组


//data为属性,list为数组名
    sortData(a, b, desc) {
        if (desc == true) {
            // 升序排列
            return a.data - b.data
        } else {
            // 降序排列
            return b.data - a.data
        }
    },
    
    compare(list) {
        list.sort(this.sortData, false);
    },

或者

//data为属性,list为数组名
    sortData(a, b, desc) {
        if (b.data - a.data > 0) {//把符合此条件的放前面
            return 1
        }else if (a.data - b.data < 0) {//把符合此条件的放最后
            return -1
        }  else {
            return 0
        }
    },
    
    compare(list) {
        list.sort(this.sortData, false);
    },

查找:

/**返回函数返回为true的第一个对象*/
let index=Arr.findIndex(value => { return value.id ==1 });
index==-1//未找到
//找到则返回数组下标

数组修改,截取

TS提供两个截取字符串的方法,分别是:slice(),substring()
它们都可以接受一个或两个参数:

var stmp = "rcinn.cn";

//slice,substring,参数为正数的用法是相同的,返回的值也一样,
//使用一个参数,从第n个字符开始,截取到最后个字符**
stmp.slice(3);stmp.substring(3);
//从第4个字符开始,截取到最后个字符;返回"nn.cn"
//如果只用一个参数并且为0的话,那么返回整个参数
stmp.slice(0);stmp.substring(0);
//返回整个字符串

//使用两个参数,从第n个字符开始,到第m个字符**
//从第2个字符开始,到第5个字符;返回"cinn"
stmp.slice(1,5);stmp.substring(1,5);

//参数为负数时,他们的返回值不一样

stmp.slice(2,-5);//返回"i";
//实际上是slice(2,3),负数加上字符串长度转换成正3,
//(若第一位 >= 第二位, 则返回空字符串);

stmp.substring(2,-5)//返回'rc';相当于stmp.substring(0,2)
//负数都转换为0,  substring总是把较小的数作为起始位置。


var phone = 15989012100;
//取倒数后n位**
phone.slice(-6) 取倒数后6位(第二个参数不用写0)return012100 ’;
phone.slice(-6-4) 取倒数后4位到倒数6位,(-6+11-4+11=5,7);

按字符截取字符串,返回数组

 var str="fasdsad-wradfasd";
 return arr = str.split("-");
返回:[fasdsad,wradfasd]
str="wradfasd";
返回:[wradfasd]

连接两个数组

let a=[1,2]
let b=[3,4]
let c=a.content(b)
c=[1,2,3,4]

对象

let obj={}

增加

obj["a"]=1;
obj["b"]=2;
obj={"a":1,"b":2}

删除

//删除元素
delete obj["a"]
//删除对象
obj=null;//这之后调用obj.a会报错

修改

obj["b"]=3
obj.b=3;

两个对象组合

let obj1={a:1,c:1},obj2={b:1,c:1}
let obj3 = Object.assign(obj1, obj2)
obj3={a:1,b:1,c:1}
//对象里每个元素只对应一个值

判断对象中是否包含某个属性

var obj = {name:'张三',age:18};
obj.hasOwnProperty('name'); // --> true
obj.hasOwnProperty('id'); // --> false

字符串

可以用for遍历字符串里每个字符,有length属性返回字符串长度

判断字符是否为数字,中文

var msg=“sdadADS24123wX ‘;’l你好”;

    var len2 = 0;//汉字数量
    var len3 = 0;//字符数量
    var len4 = 0;//英文标点数量
    
    for (var i = 0; i < msg.length; i++) {
        var a = msg.charAt(i);
        if (a.match(/[\x21-\x2f\x3a-\x40\x5b-\x60\x7B-\x7F]/) != null) {
            len4 += 1;//英文标点数量
        }
        else if (a.match(/[\u2018|\u2019]/) != null) {
            len4 += 0.85;//中文半角标点数量
        }
        else if (a.match(/[^\x00-\xff]/ig) != null) {
            len2 += 1;//汉字数量
        }
        else {
            len3 += 1;//字符数量
        }
    }
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

烧仙草奶茶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值