红宝书第五章(1)-对象和数组
程序员文章站
2022-05-26 11:33:38
...
1.对象
//Object类型
//创建Object类型
(function test_01(){
var person=new Object();
person.name="小米";
person.age=29;
console.log(person);
//对象字面量表示法
var person={
name:"小华",
age:20
}
console.log(person);
// 访问对象属性的方法
// 点方法
console.log(person.name);
//方括号法
console.log(person["age"]);
})();
2.数组
// Array对象(数组中的每一项可以保存任何类型的数据)
//创建数组
(function(){
var color=new Array();
console.log(color);
var color=new Array(20);
console.log(color);
var colors=["red","blue","green"];
// 访问第一项
console.log(colors[0]);
//修改第二项
colors[1]="black";
console.log(colors[1]);
})();
//lenght属性不只是只读,还可以通过设置这个属性,可以将从数组中的末尾移除项或向数组中添加新项
(function (){
var colors=["red","blue","green"];
// 删除
colors.length=2;
console.log(colors);//["red","blue"]
// 使用length添加数值
var args=[];
for(var i=0;i<10;i++){
args[args.length]=i;
}
console.log(args);//[0,1,2,3,4,5,6,7,8,9]
})();
// 检测数组
(function(){
var colors=["red","blue","green"];
// 只有一个全局执行域,可以使用in-stan-ce-of
if(colors instanceof Array){
console.log("colors是数组");
}
//使用框架,有多个全局执行域
//isArray确定某个值是不是数组,而不管它在哪个全局执行环境中创建的
if(Array.isArray(colors)){
console.log("colors是数组");
}
})();
0.栈、队列方法
1栈方法
数组尾端为栈顶
// 数组的栈方法push()和pop()
(function(){
var colors=new Array();
// 在末尾添加数据
colors.push("red","blue");
console.log(colors);//["red","blue"]
// 在末尾删除数据
colors.pop();
console.log(colors);//["red"]
// 获取删除项(获取的结果是数组)
console.log(colors.pop());
console.log(colors);//["red"]
})();
2.队列方法
(1)队首为数组尾部,队尾在数组头部的队列
队首-》数组尾push()
队尾->数组头shift()
// 数组的队列方法push()和shift()
(function(){
var colors=new Array();
// 在末尾添加数据
colors.push("red","blue");
console.log(colors);//["red","blue"]
//在首端删除数据
var temp=colors.shift();
console.log(temp);//red
console.log(colors);//["blue"]
})();
(2)队尾为数组尾部,队首在数组头部的队列
//pop()和unshift()
(function(){
// 在首端添加数据
var colors=new Array("blue");
colors.unshift("red");
console.log(colors);//["red","blue"]
//在末尾删除数据
temp=colors.pop();
console.log(temp);//blue
console.log(colors);//["red"]
})();
3.数组的重排序方法
reverse()和sort()
(function(){
// reverse()方法是单纯的反转
var values=[1,2,3,4,5];
values.reverse();
console.log(values);//[5, 4, 3, 2, 1]
//sort()接收一个比较函数作为参数
//返回1 交换顺序
//返回-1 和0 都不交换
function compare(value1,value2){
if(value1<value2){
return -1;
}else if(value1>value2){
// 1为交换顺序
return 1;
}else{
return 0;
}
}
var args=[0,9,1,23,14,-1];
args.sort(compare);
console.log(args);// [-1, 0, 1, 9, 14, 23]
})();
4不改变原来数组的操作方法
拼接con-cat和sli-ce方法
(function(){
// concat()方法(不改变原来数组的数据)
//参数为元素,或者数组,结果会添加在数组的末尾
var color=["red","green","blue"];
var colors=color.concat("yellow");
console.log(color);//["red", "green", "blue"]
console.log(colors);//["red", "green", "blue", "yellow"]
//slice()方法 切片方法
colors =["red", "green", "blue", "yellow","purple"];
// 只有一个参数时,从该下标到结束
var color1=colors.slice(1);
console.log("color1="+color1);//color1=green,blue,yellow,purple
// 有两个参数时,从该前下标到后一个下标
var color2=colors.slice(1,3);
console.log("color2="+color2);//color2=green,blue
//如果slice()方法的参数中有一个负数,则用数组长度加上该数来确认相应的位置
var color3=colors.slice(-4,-2);
console.log("color3="+color3);//等价于slice(1,3)
})();
5改变原来数组的操作方法`
spli-ce
//操作方法
(function(){
//splice()方法
//删除操作 指定2个参数;要删除的第一项的位置,删除的项数
var colors=["red","green","blue"];
var removed=colors.splice(0,1);
console.log(colors);//["green","blue"]
console.log(removed);//["red"]
//插入操作 指定3个参数:起始位置,删除项数0,要插入的项
removed=colors.splice(1,0,"yellow","orange");
console.log(colors);//["green", "yellow", "orange", "blue"]
console.log(removed);//[]
//替换操作 指定3个参数:起始位置,删除项数,要插入的项
removed=colors.splice(1,2,"red","purple");
console.log(colors);//["green", "red", "purple", "blue"]
console.log(removed);//["yellow", "orange"]
})();
6位置方法(查找方法)
//位置方法(查找方法)
//indexOf() lastIndexOf()查找的都是元素在数组中的索引,只是查找的顺序不同
(function(){
//indexOf() 接收两个参数:查找的项,和(可选的)表示查找的起点位置的索引
var numbers=["green", "red", "purple", "blue"];
console.log(numbers);
console.log(numbers.indexOf("red"));//1
//lastIndexOf() 接收两个参数:查找的项,和(可选的)表示查找的起点位置的索引
console.log(numbers.lastIndexOf("red"));//1
})();
7.数组的迭代方法
//迭代方法
(function(){
var numbers=[1,2,3,4,5,6,7,8];
function test(item){
return (item>3);
}
// every()如果该函数每一项都返回ture,则返回true
var everyResult=numbers.every(test);
console.log(everyResult);//false
// some()如果该函数存在一项都返回ture,则返回true
var someResult=numbers.some(test);
console.log(someResult);//true
//filter()返回该函数中返回true的项,形成数组
var filterResult=numbers.filter(test);
console.log(filterResult);//[4, 5, 6, 7, 8]
//map()返回每次调用该函数的结果组成的数组
function test2(item){
return item*2;
}
var mapResult=numbers.map(test2);
console.log(mapResult.join(","));//2,4,6,8,10,12,14,16
//forEach()
var array=[1,2,3,4,5];
var eachResult=array.forEach(function(item,index,array){
console.log(array[index]);//[1,2,3,4,5]
});
})();
上一篇: 数据结构——第二章 线性表