第5章引用类型
5.1 Object类型
创建object实例方法
//使用new操作符
var person1=new Object();
person.name="张三";
person.age=29;
var person2={};
person2.name="张三";
person2.age=29;
//使用对象字面表示法
var person3={
name:"李四",
age:28
};
使用的更多的是对象字面表示法,例子:
function displayInfo(args){
var output="";
if(typeof args.name == "string"){
output+="Name:" + args.name + "\n";
}
if(typeof args.age == "number"){
output+="Age:" + args.age + "\n";
}
alert(output);
}
displayInfo({
name:"bule",
age:18
});
displayInfo({
name:"red"
})
5.2 Array类型
构造数组
var arr1=new Array();
var arr2=new Array(20);
var arr3=["red","green","yellow"];
5.2.1 检测数组
//方法一
if (value instanceof Array){
//对数组执行某些操作
}
//方法二
if(Array.isArray(value)){
//对数组执行某些操作
}
5.2.3 栈方法
栈:后进先出
push()方法可以接受任意数量的参数,把它们逐个添加到数组末尾,并返回修改后数组的长度。而pop()方法则从数组末尾移除最后一项,减少数组的length值,然后返回移除的项。例子:
var colors=new Array();
var count = colors.push("red","green");
console.log(count);//2
count = colors.push("black");
console.log(count);//3
console.log(colors);//"red","green","black"
var item = colors.pop();
console.log(item);//"black"
console.log(colors);//"red","green"
console.log(colors.length);//2
5.2.4 队列方法
队列:先进先出
shift()方法能够移除数组中的第一个项并返回该项,同时将数组长度减一。结合使用push()。例子:
var colors=new Array();
var count =colors.push("red","green");
console.log(count);//2
count = colors.push('black');
console.log(count);//3
var item = colors.shift();
console.log(item);//red
console.log(colors.length);//2
js还提供了一个unshift()方法。用法与shift()相反:它能在数组前端添加任意个项并返回新数组的长度。因此,同时使用unshift()和pop()方法,可以从相反的方向来模拟队列,即在数组的前端添加项,从数组末端移除项。
var arr11=new Array();
arr11.push('1','2','3');
console.log(arr11);//['1','2','3']8
arr11.pop();
console.log(arr11);//['1','2']
arr11.unshift('a');
console.log(arr11);//['a','1','2']
5.2.5重排序方法
1.reverse()方法:反转数组的顺序
var values = [1,2,3,4,5];
values.reverse();
console.log(values);//5,4,3,2,1
2.sort()方法:默认是升序。注意:sort()方法会调用每个数组项的toString()转型方法,然后比较得到字符串,以确定如何排序。即使数组中的每一项都是数组,sort()方法比较的也是字符串。所以要加一个比较函数。
var values=[3,6,1,9,7,5];
//a-b升序
values.sort(function(a,b){return a-b});
console.log(values);//1,3,5,6,7,9
//b-a降序
values.sort(function(a,b){return b-a});
console.log(values);//9,7,6,5,3,1
//es6
values.sort((a,b)=>(a-b));
5.2.6操作方法
concat()方法:合并数组,构建新的数组
var arr1=[2,1,4,5];
var arr2=[3,4,5,6];
var arr3=arr1.concat(arr2);
console.log(arr3);//2,1,4,5,3,4,5,6
slice()方法:它能够基于当前数组中的一或多个项创建一个新数组。不影响原始数组
var arr1=['a','b','c','d','e'];
var arr2=arr1.slice(1);//b,c,d,e
var arr3=arr1.slice(1,4);//b,c,d 不包括结束位置的项
var arr4=arr1.slice(-2);//d,e
splice()方法:算是最强大的数组方法了。
var arr1=['a','b','c','d','e'];
//删除 指定2个参数:要删除的第一项的位置和要删除的项数
arr1.splice(1,2);
console.log(arr1);//a,d,e
//插入 指定3个参数:起始位置、0(要删除的项数)和要插入的项(可对个项)
arr1.splice(2,0,'red','green')
console.log(arr1);//a,b,red,green,c,d,e
//替换 起始位置、要删除的项和要插入任意数量的项
arr1.splice(2,2,'red','green')
console.log(arr1);//a,b,red,green,e