javascript基础数组,字符串的操作和冒泡函数等
数组
var arr = new Array(2,1,5,6,7,4,9); var arr2 = Array(1,2,"33"); //省略new来创建数组 var arr3 = [1,2,"33"]; //通过常量来创建数组 Math.random(); //0~1之间任意的数。 for(var i in arr){document.write(arr[i]+" ");} //另一种遍历arr的方式。这个方法要比for循环效率高
alert(arr);
1.栈结构:
push()方法:从一口进,从同一个口出。特点:先进后出。功能:给数组末尾添加元素,
var aes = arr.push("ee","sdfs"); alert(aes); //返回值:添加完元素之后,数组的长度。
pop()方法:去掉最后一个元素
var aes = arr.pop(); alert(aes); //返回值:返回刚才去掉的最后一个元素。
队列结构:从一头进,从另外一头出去,特点:先进先出
indexOf()方法:查找数组中是否含有相同的元素,如果有返回下标,没有返回-1
lastIndexOf()方法:从尾部开始查找数组中是否含有相同的元素,如果有返回下标,没有返回-1
shift()方法,从数组的头部去掉一个元素
unshift()方法,从数组的头部插入元素
concat();数组的合并,返回值,合并后的新数组, arr.concat(arr2);
slice();剪切数组,返回值,剪切后的新数组, slice(1,3); 1,3代表下标,下标1开始到目标下标3结速,但不包括下标3,返回去掉的元素,
splice();splice(下标,length,元素);
删除功能: splice(1,1); 去掉第二个长度1, var am = arr.splice(1,1); 这个返回值为删除的第二个元素,
添加功能: splice(1,0,"sdf");splice(1,0,"sdf","dsf"); 从第二个元素开始添加元素
替换功能: splice(1,1,"sdfsd");
join();拼接符,将元素拼接成字符串, arr.join("+s"); 返回值,返回字符串
reverse();数组的逆向排序
sort();默认升序排序,默认是用字符串的asc ii编码表来排序的,而不是按照大小来排序的,
自定义sort();排序方法
var arr = ['sdf','sdfsdf','sdffds','f','fd']; arr.sort(function(x,y){//x,y代表任意两个元素 return x.length - y.length;//如果若return > 0 y前x后;reutrn < 0 x前y后,x-y输出从小到大排序,y-x输出从大到小排序。
})
2.二维数组
1,2,3,4,5
6,7,8,9,10
格式:var arr = [[],[],[],[],[]];
var count = 0;//每个数组中的元素 var arr = []; for(i=0;i<5;i++){
var newArr = []; for(j=0;j<5;j++){
newArr.push(++count);
} arr.push(newArr); } alert(arr.length);//返回5 alert(arr[0]);//返回1,2,3,4,5, for(i=0;i<arr.length;i++){ for(j=0;j<=i;j++){
document.write(arr[i][j] + "&ensp");
} document.write(<br />); }
冒泡排序
按顺序逐步把最大的放到最后面。
var arr4 = [9,4,8,6,7,2]; for(i = 0;i < arr4.length;i++) { for(j = 0;j < arr4.length -i -1 ; j++) { if(arr4[j] > arr4[j+1])//比较前后两个数字是否符合交换条件 { var tmp = arr4[j];//先将大的元素放进一个变量, arr4[j] = arr4[j+1];//前后交换变量 arr4[j+1] = tmp; } } } alert(arr4);
选择排序
按顺序谁最大谁就排在最后面
var arr4 = [5,6,4,7,3,9]; for(i = 0;i < arr4.length;i++) { for(j = i;j < arr4.length ; j++) { if(arr4[j] < arr4[i]) { var tmp = arr4[i]; arr4[i] = arr4[j]; arr4[j] = tmp; } } } alert(arr4);
变量函数中作用域
变量提升
console.log(a);//因为下边变量被声明,所以有了变量提升,这里返回undefined var a = 10;
function func(){
p = 10;//这里的p被定义成了全局变量。
} console.log(a);
func();//运行函数
console.log(p);//返回10;
var a = 10; function show(){ a=5; } show(); alert(a);//返回5 var a = 10; function show(a){ a=5; } show(a); alert(a);//返回10,形参在函数调用结束后被释放 var arr = [1,2]; function show(arr){arr.push(3,4);} alert(arr);//返回1,2,3,4 数组是复合数据类型/引用数据类型,并不存储在函数中,存储在堆段,所有复合数据类型都是引用地址
字符串的函数:必须在document.write中使用
var str = "hello"; str.charAt(2); 下标返回l。 str[1]; 也可以,不能被赋值, str[1] = "x"; ,只能 str = "sdf";
big();用大号字体显示,
blink();用闪动字符串(ie不兼容)
bold();使用粗体
fixed();以打字机的文本显示,
strike();使用删除线
fontcolor();
fontsize();
link();链接
sub();下标, document.write("hello".sub());
sup();上标
charCodeAt(下标);返回asc ii码值
fromCharCode(asc ii 码值)
concat();
var str = "1"; var str2 = "2"; var str3 = str.concat(str2);
字符串
字符串是一种引用方法,地址存在栈中,地址引用了堆中的数据,堆中的数据是无法更改的,他在只读区域。
var str = "hello";//返回基本数据类型string var str1 = new String("hello");//返回的是一个object
str.length;//则将str转换成了对象。
str[0] = "x";//是不能改变它的值的。
字符串的查找方法:
indexOf();indexOf(子串,开始查找的下标),返回值,相同字符串第一次出现的位置,或者没有返回-1
lastIndexOf();lastIndexOf(子串);相同字符串第后一次出现的位置,返回值,没有-1
charAt();charAt(3)查找字符串中下标3的字符。
charCodeAt();查找下标字符的ACSII码, String.fromCharCode(20895); 用ASC II 码查询相对应的字符
search();参数可以是正则表达式,i是忽略大小写,g代表全局匹配
var str = "Abcabcabc";str.search("abc"); 返回3,正则表达式/abc/i,返回0
字符串替换:
replace();replace(匹配字符串/正则表达式,"df");返回值,替换后的字符串,
replace("are","sdf");特点,只能替换第一次找到的目标
replace(/sf/g,"sdf");替换掉所有相同字符串
substring(); substring(2,4); 截取下标2和3不包括4,返回值,生成的新字符串
substr();sunstr(下标,长度);参数1,下标,参数2截取的长度,返回截取的内容
slice(); slice(-2); 截取最后两个字符。
split();split(分隔符,生成的数组长度);返回一个数组
var str = "this is it";var arr = str.split(" ",2); 长度两个的数组
arr.join();将数组转换字符串arr.join(" ");返回一个字符串
toLowCase();全小写
toUpperCase();全大写

浙公网安备 33010602011771号