数组
数组
- 定义:new Array(length/content);
字面量 只有这两种方式
var arr = [1,2,,,,3,4];
var arr = new Array(1,3,3,4,6);
只有这两种方式,这两种基本上是一样得,逗号分隔开那部分是underfined
var arr = new Array(10);
和上一种不同的是 如果只有这一位参数,就会被当成长度,而不是第一位的值。10个underfined ;这里如果是10.2带小数点就会报错,只能填整数,而第一种不会。
数组常用的方法
- 改变原数组
push, pop , shift, unshift, sort, reverse, splice - 不改变原数组
concat,join-->split,toString,slice
1.push:往数组末尾加东西
var arr = [1,2,3];
Array.prototype.push = function() {
for(var i= 0; i < arguments.length; i++){
this[this.length] = arguments[i];
}
return this.length;
}
arr.push(4,5,6,7);
2.pop:向数组里面剪切东西
var arr = [1,2,3];
arr.pop() return 3 ;
arr() arr[1,2];
3.shift:往数组首位去东西
var arr = [1,2,3];
arr.shift() return1;
arr() arr[2,3];
4.unshift: 往数组首位填东西
var arr = [1,2,3];
arr.unshift(-1,0) return5;
arr() arr[-1,0,1,2,3]
5.reverse:逆转
var arr = [1,2,3];
arr.reverse() return[3,2,1]
6.splice:
arr.splice(从第几位开始,截取多少的长度,在切口处添加新的数据)
1)var arr = [1,1,2,2,3,3];
arr.splice(0,3) arr[2,3,3]
2)var arr = [1,2,3,5];
arr.splice(3,0,4); arr[1,2,3,4,5];
3)var arr = [1,2,3,4];
splice = function(position){
position += positon > 0 ? 0:this.length
-1 + 4 = 3 第零位是在1前面,光标所在位置
arr.splice(-1,1) return[ 4]
7 .sort:正常是按阿斯克吗顺序排的
arr[1,3,10,4,8]
但是如果要按正常顺序排序,需按一下操作执行
1.必须写俩形参
2.看返回值
1)当返回值为负数时,那么前面的数放在前
2)为正数,那么后面的数在前
3)为0, 不动
var arr = [20,2,10,13,4,8,9];
arr.sort(function (a,b) {
// if(a>b){
// return a-b
//} else{
// return a-b
//}
//return a-b;升序
//return b-a 降序
return b-a;
});
给一个有序的数组,乱序
var arr = [1,2,3,4,5,6,7];
arr.sort(function() {
return Math.random() - 0.5
});
function retBytes(str) {
var num = str.length;
for(var i = 0; i < str.length; i ++ ) {
if(str.charCodeAt(i) > 255){
num ++;
}
}
return num;
}
var arr = ['a打', ‘ba打’, ‘cc打cc’,‘老打’,‘残
打’,‘dasdasd’,‘大大是’];
arr.sort(function (a, b ){
return retBytes(a) - retBytes(b);
});
8.concat:拼接数组 但不改变原数组
arr.concat(arr1)
[1,2,3,4,5,6,7,8,9]
arr [1,2,3,4,5,6] arr1[7,8,9]
9.slice:(从该位开始截取,截取到该位)(两个参数)
var arr = [1,2,3,4,5,6];
var newArr = arr.slice(1, 3)
newArr[2, 3]
var newArr = arr.slice(-4)
newArr[3, 4, 5,6] 如果是截一位,一直截取到最后
10.join:用来连接数组
var arr = [1,2,3,4,5,6]; var str = arr.join("-")
str return "1-2-3-4-5-6"
str.split("-") return ['1','2','3','4','5','6']
var str = 'alibaba';
var str1 = 'baidu';
var str2 = 'tencent';
var str3 = 'toutiao';
var strFinal ="";
//散列
var arr =[str,str1,str2,str3];
console.log(arr.join(""))