05-数组
了解数组
字面量的创建方式
var arr = [ 1, 2, 3, 4 ];
每一个数据中间用逗号隔开;
通过内置函数创建数组
var arr = new Array( )
[注]:若只有一个数字的时候如“var arr = new Array( 5 )” 则代表一个有五个元素的数组;
通过设置数组的长度,来设置数组元素的个数 .length( 获取数组的长度);
例如:
var arr=[1,2];
arr.length = 4;
console.log(arr[4]);//undefined
数组的索引,也叫作数组的下标
[注]:数组的索引从0 开始 到数组的长度减1
var arr = [1,2,3,4,5,6]
console.log(arr);
我们可以通过数组的索引下边访问数组中的元素,通过数组关联法
console.log(arr[0]); //输出 1;
console.log(arr[3]);//输出 3;
[注]:数组下标的最大值是数组长度减1
拓展(了解)
数组对象的元素是动态添加的,如果没有就添加,有就改变
arr[4] = 'str';
console.log(arr); // [1, 2, 3, empty, "str"]
console.log(arr[4]); // str
console.log(arr.length);
设置长度为0,就会将数组清空
var arr = [1,2,3];
console.log(arr);
arr.length = 0;
console.log(arr);// 0
了解对象
字面解释:
对象----是一个数据类型,复杂数据类型,对象就是一个无序数据的集合
对象中的数据是以键值对的形式存储 key=value;
对象中的键值对,很多时候也叫做对象的属性和属性值(方法)
对象的语法: {} 是一个空对象
{key:value} {key1:value1,key2:value....}
对象中
键 :就是键值对中的 键 ,对象中的键的类型只能数字符串,在对象中可以用单引号包裹,也可以没有
键值: 对象中的键值可以数任意的数据类型
键值对,键和值用冒号连接,多个键值对用逗号连接
创建对象
1.通过内置构造函数创建对象
var obj1 = {} // 空对象
console.log(obj1);
var obj2 = {name:'leon',age:32};
console.log(obj2);
2. 通过内置构造函数创建对象
var obj3 = new Object(); // 空对象
console.log(obj3);
对象属性的访问方式
点语法 对象.属性名
console.log(obj.name);
console.log(obj.age);
console.log(obj.like);
数组关联法 对象[属性名] , 属性名用引号包裹
console.log(obj['name']);
console.log(obj['age']);
对象属性进行赋值
对象添加属性 可以使用点语法 给属性赋值
obj.score = 100;
使用数组关联法
obj['height'] = '171cm'
删除对象中的属性 delete 对象.属性名
console.log(obj);
delete obj.height;
console.log(obj);
拓展(了解)
添加对象的属性和属性值,变量attrName中的值作为属性名,arrtValue中的值作为属性值
添加对象属性的时候,如果属性名是一个变量,不能通过点语法添加,只能用数组关联法
var attrName = 'eat';
var attrValue = 'rice';
obj[attrName] = attrValue;
console.log(obj);
数据的存储区别
栈空间
基本数据类型在内存中,都是存储在栈空间
基本数据类型的变量之间进行赋值,两个变量互不影响
堆空间
复杂数据类型在内存中,数据存储在堆内存空间,变量存储在栈内存中,变量中存储的是数据的空间地址
复杂数据类型的变量之间的赋值,是地址的赋值;赋值后两个变量操作同一个数据空间
数组的操作方法
pop 删除数组中的最后一个元素;
语法:数组.pop();
会改变原来数组;
返回值:删除的元素;
push 添加一个元素在数组的末尾(最后面);
语法: 数组.push(参数) 参数就是要添加的元素
会改变原始数组
返回值:数组改变后的长度
shift 删除数组开头的第一个元素;
语法: 数组.shift()
会改变原始数组
返回值: 删除的元素
unshift 添加一个元素在数组的开头(最前面)
语法:数组.unshift(参数) 参数是要添加的元素
返回值: 改变后的数组长度
splice 截取数组中的元素
语法1:数组.splice(参数1,参数2) 参数1:下标 参数2:截取的个数
会改变原来的数组
返回值为截取的数组;
var arr = [1,2,3,'hello',4,5,6];
var res = arr.splice(1,3);
console.log(res);
console.log(arr);
语法2:数组.splice(参数1,参数2,参数3) 参数1:下标 参数2:截取的个数 参数3:替换的内容;
会改变原来的数组
返回值为截取的数组;
var arr = [1,2,3,'hello',4,5,6];
var res = arr.splice(0,4,'nihaosao');
console.log(res);
console.log(arr);
slice 截取数组中的元素
语法:数组.slice(起始下标,结束下标)截取数组中元素生成新的数组(看前不看后)
[注]:结束下标可以使用负值,-1表示从数组的最后一个开始(类似倒序截取)
不会改变原来数组;
返回值:截取的新数组;
var arr = [1,2,3,'hello',4,5,6];
var res = arr.slice(1,3);
console.log(res);
console.log(arr);
var res = arr.slice(0,-1);
console.log(res);
concat 数组拼接
语法:数组.concat(参数)参数可以是某一些元素,可以是数组;
不会改变原来的数组
返回值:拼接后的数组
var arr = [1,2,3,'hello',4,5,6];
var res = arr.concat(7);
console.log(res);
console.log(arr);
var tmp = [7,8,9];
var res = arr.concat(tmp);
console.log(res);
sort 数组的排序
语法1:数组.sort()将数组进行排序
排序是按照第一个数进行排序的
语法2:数组.sort(function(a,b){a-b});
var arr = [2,1,5,6,3,4];
var res = arr.sort(function(a,b){
return a-b;|| return b-a(两者的顺序颠倒)
})
console.log(res);
var arr2 = [111,33,2222];
console.log(arr2.sort(function(a,b){return a-b}));
reverse 数组反转
语法:数组.reverse();
改变原来数组
返回值:颠倒后的数组;
var arr = [1,2,3,4,5];
console.log(arr.reverse());
console.log(arr);
join 改变数组之间的连接符;
语法:数组.join(“参数”) 若参数空白表示默认逗号
不会改变数组
返回值:拼接后的字符串
console.log(arr.join('-'));
console.log(arr);
var arr = [1,2,3,4];
console.log(arr.join());
indexOf 返回元素数组的下标
语法:数组.indexOf(参数)
返回值:参数的下标,若没有这个参数则返回-1;
var arr = [1,2,3,45];
console.log(arr.indexOf(3));//45
console.log(arr.indexOf(4));//-1