数组添加属性,增加,删除,排序,查找,按数组元素排列数组,判断对象中是否包含某个属性
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),return ‘012100 ’;
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;//字符数量
}
}