数组学习
改变原数组
push() 方法可向数组的末尾添加一个或多个元素,并返回新的长度。(可多个)
pop() 方法用于删除并返回数组的最后一个元素。(不可传值)
shift() 方法用于把数组的第一个元素从其中删除,并返回第一个元素的值。
unshift() 方法可向数组的开头添加一个或更多元素,并返回新的长度。
reverse() 方法用于颠倒数组中元素的顺序。(逆转)
splice(从第几位开始,截取多少长度,在切口处添加新的数据)
sort(排序)
var arr=[];
系统实现方法:
push方法:
Array.prototype.push=function () {
for (var i = 0; i < arguments.length; i++) {
this[this.length]=arguments[i];
}
return this.length;
}
unshift方法:
Array.prototype.unshift=function () {
for (var i = 0; i < arguments.length; i++) {
this[0]=arguments[i];
}
return this.length;
}
sort (排序):
1:必须两形参2:看返回值
1)返回值为负数,那么前面的数在前 ;
2)返回值正数,那么后面的数在前 ;
返回值0 不动
arr.sort(function(a,b){
// if(a>b){
// return 1;
// }else{
// return -1;
// }
return a-b;//升序
return b-a;//降序
})
//乱序 将一个有序数组随机打乱排序
arr.sort(function(){
return Math.random()-0.5;
})
Math.random() 随机数0到1;
//字节排序
//var str = "ddd呆的"
function retBytes(str){(判断一个字符串字节长度)
var num = str.length;
for (var i = 0; i < str.length; i++) {
if (str.charCodeAt(i)>255) {
num++;
}
}
return num;
}
console.log(retBytes(str)) // 打印7
var arr=["a灯","挨边不","中","顶顶zan"];arr.sort(function (a,b){
return retBytes(b)-retBytes(a);
})
console.log(arr) //对字符串长度进行从大到小进行排序
//第二种写法 (同样调用判断字符串长度的函数)
function sortArr(a,b){
return retBytes(a)-retBytes(b);
}
console.log(arr.sort(sortArr)) //对字符串长度进行从下到大进行排序
charCodeAt() 方法可返回指定位置的字符的 Unicode 编码。这个返回值是 0 - 65535 之间的整数。
concat 拼接一个或多个数组,返回新的数组
join 用于把数组中的所有元素连接返回一个字符串。
split 字符串方法 数组返回字符创 字符创返回数组(互逆)
toString 方法可把一个逻辑值转换为字符串,并返回结果。
slice (从哪位开始,截取到哪位)
将多个字符串拼接
var arr = [str1,str2...];
arr.join(“”);
//类数组
var obj = {
"0":"a",
"0":"b",
"0":"c",
"length":"3",
"push":Array.prototype.push
}
1:0属性要有索引(数字)属性
2:必须有length属性,最好加上push
好处
将数组和对象拼接到一起
类数组push方法
Array.prototype.push=function(target){
obj[obj.length]=target;
obj.length++;
}