1.数组的定义:
1.构造方法:
var arr = new Array(1,2,3,4,5,6);
<1>new:在堆内存开辟空间的关键字。
<2>Array:数组数据类型。
2.字面量:
var arr1 = [1,2,3,4,5,6];
<1>参数可以为任意值。
2.数组元素的访问:
数组[下标];
<1>下标:索引,基于0的连续自然数(可为变量)。
<2>数组下标的取值范围:0~元素个数-1。
<3>数组长度:length
<4>数组千万不能越界访问
3.数组的遍历:
定义:对数组的全部元素执行某种相同的操作
for循环可以实现对数组的遍历。
var arr =[1,2,3,4,5,6,7,8,3,5,6,7];
for (var i =0;i<arr.length;i++){
console.log(arr[i]);//把所有元素都遍历出来
}
数组的逆序:
var arr = [1,4,6,7,9,3,5,8];
var t =0;
var len = arr.length;
for(var i=0;i<arr.length/2;i++){
t=arr[i];
arr[i]=arr[len-1-i];
arr[len-1-i]=t;
}
console.log(arr);
4.数组的API(函数):
1.push:
功能:尾插一个或多个元素
参数:push(x1[x2.....xn]);
返回值:尾插后的新数组的长度
2.pop:
功能:尾删
参数:无
返回值:被删除的元素
3.unshift:
功能:头插一个或多个元素
参数:unshift(x1[x2.....xn]);
返回值:新数组的长度
4.shift:
功能:头删
参数:无
返回值:被删除的元素
5.reverse:----------直接修改原数组
功能:逆序
参数:无
返回值:无
6.splice:
功能:删除指定元素且用新的元素替代
参数:splice(起始位置,偏移量,[替换元素]);
返回值:被删除的元素,其实是一个数组
var arr=[1,2,3,5,6];
var arr1=arr.splice(1,3,4,3,6);//从下标为1的位置,向后偏移三位,加上4,3,6
console.log(arr1);//1,1,4,3,6,5,6
7.concat:
功能:数组的拼接
参数:concat(数组)
返回值:被拼接的新数组
8.join:
功能:将数组转化为字符串
参数:jion([字符分割符])
返回值:被分割的字符串
9.slice:
功能:数组的截取
参数:slice(起始位置,结束位置) [左闭右开)
返回值:截取的数组
5.冒泡排序:
两两比较,每趟找出最大值或最小值
var arr =[2,4,6,3,8,1,9];//从大到小排序
var t=0;
for(var i=0;i<arr.length-1;i++){
for(var x=0;x<arr.length-1-i;x++){
if(arr[x]<arr[x+1]){
t=arr[x];
arr[x]=arr[x+1];
arr[x+1]=t;
}
}
}
console.log(arr);
6.选择排序:
// 选择排序:将数组中的元素从小到大排序
// 思路:i控制指定位置
// k控制目标位置
// k=i时用k来查找目标位置
// 最后交换arr[k]和arr[i]
function fn(arr){
var arr=[1,4,6,3,7,2,8,5];
var k=0;
var t =0;
for(var i=0;i<arr.length-1;i++){//趟数
k=i;
for(var j=i+1;j<arr.length;j++){//次数
if(arr[k]>arr[j]){//选择排序不是每次都进行交换,一趟只交换一次
k=j;
}
}
//经过内层循环,k得到是的最小元素所对应的下标
t=arr[i];
arr[i]=arr[k];
arr[k]=t;
}
return arr;
}
console.log(fn());
7.json对象:
1.json:
是一种容器(数组格式),将多个繁琐的属性或方法封装成一个整体
定义:由若干个键值对构成的,一组以上的键值对用逗号分开
语法:
var stu ={
key1:value1,
key2:value2,.....//key全部用双引号括起来(习惯问题)
}
2.json对象属性的使用:
方法1:对象名.属性名
方法2:对象名["索引"]
索引可以为变量,且不用双括号括起
例:定义一个对象他有的属性为名字,年龄,性别....
var stu={
"name":"呆毛",
"age":22,
"gender":"M"
}
方法1:对象名.属性名
console.log(stu.name,stu.age,stu.gender);
方法2:下标法
对象名["索引"]
var str ="render";
console.log(stu["name"],stu["age"],stu[str]);
3.for....in.... (遍历索引)
语法:
for(var 索引变量名 in 容器){
循环体
}
注意事项:for....in....中不能用打点的方法
4.添加自定义属性:
对象名.新的属性名=数值;
注意事项:有则修改,无则添加
5.添加方法的json对象:
var stu={
"name":"呆毛",
"age":22,
"eat":function(){
console.log("eat");
},
"showValue":function(){
console.log(this.name,this.age);
this.eat();
}
}
console.log(stu.name,stu.age);
stu.eat();
stu.showValue();
如果某成员方法要使用其他的成员属性或方法必须加this前缀(this目前代表调用该函数的对象本身)
8.严格模式:
严格模式:无法使用未被声明(定义)的变量,但是不限制声明顺序
"use strict"
9.数组ES5新增方法:
1.indexof
功能:查找目标元素,找到返回下标,找不到返回-1
参数:indexof(目标元素)
返回值:找到返回下标,找不到返回-1
注意事项:只能查找第一个出现的元素的下标
×××数组去重:
var arr = [1,1,2,3,4,5,2,3];
var arr1 =[];
for(var i=0;i<arr.length;i++){
if(arr1.indexOf(arr[i]) ==-1){
arr1.push(arr[i]);
}
}
console.log(arr1);
2.forEach:
功能:对数组的所以元素执行某种相同的操作
参数:forEach(回调函数);
回调函数参数:回调函数(数组元素的值,[下标,元素所在的数组])
返回值:无
3.map:
功能:对数组的所以元素执行某种相同的操作
参数:map(回调函数);
回调函数参数:回调函数(数组元素的值,[下标,元素所在的数组])
返回值:用回调函数return的数据构成一个数组
4.filter:
功能:按条件过滤元素
参数:filter(回调函数);
回调函数参数:回调函数(数组元素的值,[下标,元素所在的数组])
返回值:根据当前回调函数return的布尔值,返回当前元素本身 (true则返回,false则无事发生)